2010-03-23 12 views
24

क्या codepad जैसी कोई सेवाएं हैं जो आपको पर्ल के पुराने संस्करणों पर पर्ल संरचनाओं का परीक्षण करने की अनुमति देगी?पर्ल में कोई सुविधा कब जोड़ा गया था, मैं परीक्षण कैसे कर सकता हूं?

आदर्श रूप से, एक प्रणाली जहां आप एक अभिव्यक्ति दर्ज कर सकते हैं और यह आपको पर्ल का सबसे पुराना संस्करण बताएगा कि यह काम करेगा।

बेशक इसके लिए सीपीएएनटीएस का उपयोग करना संभव है, लेकिन यह सेवा के दुरुपयोग की तरह लगता है (अगर केवल बैकपैन बड़ा करने के लिए)। और पुराने संस्करणों पर सभ्य परीक्षण कवरेज प्राप्त करने में कई दिन/सप्ताह लग सकते हैं।

उत्तर

21

आपको Perl::MinimumVersion सहायक मिल सकता है। अपने कोड को स्कैन करने के लिए प्रदान की गई perlver उपयोगिता का उपयोग करें।

+0

+1 उत्कृष्ट सिफारिश। –

+0

मुझे भी +1। –

+0

+1 यह बहुत ही बढ़िया है! – rjh

3

मुझे पता है कि पेर्लक्रिटिक कुछ मामलों को खोजने में सक्षम है, लेकिन आम तौर पर आपको इसे Google या perldelta फ़ाइलों में देखना होगा। विशेष रूप से, आप 5.65.8 और 5.10 और शायद आगामी 5.12

3

आप जब एक मॉड्यूल कोर पर्ल के लिए पेश किया गया था के लिए देख रहे हैं, तो आप उपयोग कर सकते हैं Module::CoreList के लिए डेल्टा को देखने के लिए चाहते हो सकता है।

यदि आप पर्ल के लिए codepad जैसी प्रणाली विकसित करने में मदद करना चाहते हैं, तो "पिटा परीक्षण" की खोज करें।

विशेष रूप से, यदि आप अपने कोड का परीक्षण करने के लिए कई पर्ल बाइनरी डाउनलोड और स्थापित करने के लिए उपयोगिता चाहते हैं, तो आप PITA-Setup-Perl/bin में प्रोग्राम देख सकते हैं।

+0

मुझे 'कोरलिस्ट' बहुत उपयोगी लगता है, लेकिन दुर्भाग्य से यह यह नहीं बताता कि प्रत्येक पर्ल वितरण के साथ भेजे गए मॉड्यूल का * संस्करण * कौन सा है। जैसे हाल ही में मैं हैश :: यूटिल में कुछ नई सुविधाओं का उपयोग कर रहा था जैसा कि perldoc.perl.org प्रलेखन में वर्णित है, केवल बाद में यह पता लगाने के लिए कि इंटरफ़ेस जिसे मैं उपयोग करना चाहता था, तब तक दिखाई नहीं दिया जब तक संस्करण (0.05) पर्ल संस्करण मैं उत्पादन में उपयोग (5.8.5)। :( – Ether

+0

मॉड्यूल :: कोरलिस्ट के पास संस्करण जानकारी है। –

8

मुझे लगता है कि अगर मैं चिंतित था, तो मैं अपनी मशीन पर पर्ल के मुख्य संस्करणों का निर्माण करता हूं और उनका परीक्षण करता हूं। दरअसल, यह वही है जो मैं वैसे भी करता हूं। मेरे 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 

यहाँ यह चल रहा है, इसका एक उदाहरण अंकों की श्रृंखला में 'स्टार' को सीमित करने के लिए)। पर्ल जो विफल रहता है ऐसा इसलिए करता है क्योंकि बिन निर्देशिका में पर्ल की एक प्रति नहीं होती है; मुझे किसी बिंदु पर अंतरिक्ष बचाने की जरूरत थी! शेल स्क्रिप्ट को एक पर्ल स्क्रिप्ट में निश्चित रूप से परिवर्तित करना मुश्किल नहीं होगा।

+0

यह एक प्रभावशाली सूची है! क्या आपके पास एक स्क्रिप्ट है अनुक्रम में सभी संस्करणों के खिलाफ एक विशेष मॉड्यूल, स्क्रिप्ट या यूनिट परीक्षण चलाएगा और परिणामों को टकराएगा? ऐसी उपयोगिता वास्तव में एक चिड़चिड़ा/सैंडबॉक्स वाले सीजीआई के रूप में आसान हो सकती है। – Ether

+2

मेरे पोस्ट को प्रभावी पेर्लर में भी देखें: http: // www। effectperlprogramming.com/blog/92 –

+0

@brian d foy: दिलचस्प लेख। मैं एक लू को नियोजित करता हूं इनफॉर्मिक्स उत्पादों के साथ-साथ साथ-साथ काम करने के लिए पर्ल, पायथन, जीसीसी, टीसीएल/टीके, गिट, ओपनएसएसएल, और (कुछ हद तक अधिक व्यापक रूप से) के लिए समकक्ष समकक्ष प्रणाली। इनफॉर्मिक्स सामग्री भ्रमित है क्योंकि मुझे 32-बिट बनाम 64-बिट वातावरण से भी निपटना होगा। –

संबंधित मुद्दे