मुझे लगता है कि अगर मैं चिंतित था, तो मैं अपनी मशीन पर पर्ल के मुख्य संस्करणों का निर्माण करता हूं और उनका परीक्षण करता हूं। दरअसल, यह वही है जो मैं वैसे भी करता हूं। मेरे Solaris 10 मशीन है:
lrwxrwxrwx 1 jleffler rd 26 Mar 6 2008 v5.10.0 -> v5.10.0-32bit-multiplicity
drwxr-xr-x 3 jleffler rd 512 Jan 10 2008 v5.10.0-32bit
drwxr-xr-x 6 jleffler rd 512 Mar 7 2008 v5.10.0-32bit-multiplicity
drwxr-xr-x 3 jleffler rd 512 Jan 10 2008 v5.10.0-64bit
lrwxrwxrwx 1 jleffler rd 13 Jan 29 21:07 v5.10.1 -> v5.10.1-64bit
drwxr-xr-x 6 jleffler rd 512 Jan 29 21:43 v5.10.1-64bit
drwxr-xr-x 5 jleffler rd 512 May 6 2003 v5.5.3
lrwxrwxrwx 1 jleffler RAND 11 Mar 21 2007 v5.6.1 -> v5.6.1-full
drwxr-xr-x 5 jleffler rd 512 May 6 2003 v5.6.1-full
drwxr-xr-x 5 jleffler rd 512 Feb 5 2008 v5.8.7-multi
lrwxrwxrwx 1 jleffler rd 19 Mar 24 2007 v5.8.8 -> v5.8.8-32bit-sun-cc
drwxr-xr-x 6 jleffler rd 512 Mar 25 2007 v5.8.8-32bit-sun-cc
drwxr-xr-x 5 jleffler rd 512 Feb 13 2006 v5.8.8-64bit-thread-multi
drwxr-xr-x 3 jleffler rd 512 Mar 20 2008 v5.8.8-gcc-3.4.6
तो, कि 5.5.3, 5.6.1, 5.8.7, 5.8.8, 5.10.0 और 5.10.1 स्थापित है,
-rw-r--r-- 1 jleffler rd 2171936 Apr 12 2001 perl-5.004_04.tar.bz2
-rw-r--r-- 1 jleffler rd 3023320 Aug 31 1999 perl-5.005_03.tar.bz2
-rw-r--r-- 1 jleffler rd 12426022 Dec 18 2007 perl-5.10.0.tar.bz2
-rw-r--r-- 1 jleffler rd 11608061 Jan 29 12:32 perl-5.10.1.tar.bz2
-rw-r--r-- 1 jleffler rd 4430438 Mar 29 2000 perl-5.6.0.tar.bz2
-rw-r--r-- 1 jleffler rd 4864306 Apr 8 2001 perl-5.6.1.tar.bz2
-rw-r--r-- 1 jleffler rd 5142605 Aug 16 2005 perl-5.6.2.tar.bz2
-rw-r--r-- 1 jleffler rd 8618487 Jul 18 2002 perl-5.8.0.tar.bz2
-rw------- 1 jleffler rd 9410641 Sep 29 2003 perl-5.8.1.tar.bz2
-rw-r--r-- 1 jleffler rd 9424944 Nov 5 2003 perl-5.8.2.tar.bz2
-rw-r--r-- 1 jleffler rd 9509716 Jan 14 2004 perl-5.8.3.tar.bz2
-rw-r--r-- 1 jleffler rd 9598489 Apr 21 2004 perl-5.8.4.tar.bz2
-rw-r--r-- 1 jleffler rd 9464689 Jul 19 2004 perl-5.8.5.tar.bz2
-rw-r--r-- 1 jleffler rd 9693085 Nov 27 2004 perl-5.8.6.tar.bz2
-rw-r--r-- 1 jleffler rd 9839086 Jun 15 2005 perl-5.8.7.tar.bz2
-rw-r--r-- 1 jleffler rd 1Feb 13 2006 perl-5.8.8.tar.bz2
-rw-r--r-- 1 jleffler rd 11121414 Dec 14 2008 perl-5.8.9.tar.bz2
@Ether पूछा::
आप एक स्क्रिप्ट जो एक विशेष मॉड्यूल, स्क्रिप्ट या अनुक्रम में सभी संस्करणों के खिलाफ इकाई परीक्षण चलेंगे है मैं भी अन्य संस्करणों के लिए स्रोत है और परिणामों को collate? ऐसी उपयोगिता वास्तव में एक चिड़ियाघर/सैंडबॉक्स वाले सीजीआई के रूप में आसान हो सकती है।
नहीं, लेकिन मुझे इसकी आवश्यकता नहीं है। यह मूल रूप से तुच्छता हालांकि:,
for perl in /usr/perl/v5.*.?
do
echo $(basename $perl)
$perl/bin/perl "[email protected]"
done
असल में/usr/पर्ल/पर्ल निर्देशिका से प्रत्येक के लिए, तर्कों के दिए गए सेट पर बिन निर्देशिका से पर्ल चलाते हैं। आउटपुट देखें ...
कठिनाई यह तय करने में है कि क्या गुजरता/विफल होता है। जाहिर है, पाश की कोर हो सकता है:
if $perl/bin/perl "[email protected]" >/dev/null 2>&1
then echo ok $perl
else echo not ok $perl
fi
कि धुँधली-सी TAP उत्पादन के समान है।यह औपचारिक रूप से बराबर (बैश का उपयोग कर या कॉर्न खोल) बनाने के लिए:
$ ksh test.perl -e 'exit 0'
1..6
ok 1 - /usr/perl/v5.10.0
ok 2 - /usr/perl/v5.10.1
ok 3 - /usr/perl/v5.5.3
ok 4 - /usr/perl/v5.6.1
ok 5 - /usr/perl/v5.8.8
not ok 6 - /usr/perl/v5.8.8-gcc-3.4.6
$
कि शेल स्क्रिप्ट और उनके ग्लोबिंग सुविधाओं में एक सीमा से पता चलता (मैं चाहता हूँ:
test=0
max=$(ls -d /usr/perl/v5.*.? | wc -l | sed 's/ //g')
echo 1..$max
for perl in /usr/perl/v5.*.?
do
((test = test + 1))
if $perl/bin/perl "[email protected]" >/dev/null 2>&1
then echo ok $test - $perl
else echo not ok $test - $perl
fi
done
यहाँ यह चल रहा है, इसका एक उदाहरण अंकों की श्रृंखला में 'स्टार' को सीमित करने के लिए)। पर्ल जो विफल रहता है ऐसा इसलिए करता है क्योंकि बिन निर्देशिका में पर्ल की एक प्रति नहीं होती है; मुझे किसी बिंदु पर अंतरिक्ष बचाने की जरूरत थी! शेल स्क्रिप्ट को एक पर्ल स्क्रिप्ट में निश्चित रूप से परिवर्तित करना मुश्किल नहीं होगा।
+1 उत्कृष्ट सिफारिश। –
मुझे भी +1। –
+1 यह बहुत ही बढ़िया है! – rjh