2012-06-17 13 views
6

पर अपनी खुद की प्रगति जोड़ने का सही तरीका मुझे वास्तव में पुराना पर्ल सिस्टम (लगभग 8-10 वर्ष पुराना) मिला, लेकिन एक बड़ी (100+ बजे फाइलें)। अब किसी कारण से इसे "remodernize" की आवश्यकता है - चरण-दर-चरण।पुरानी perl sw

पहली बात मैं कर पाने क्या चाहते हैं में से एक हर मॉड्यूल में मेरी pragma सम्मिलित है:

use MySw::PerlDefs; 

क्या Modern::Perl में तरह बातें शामिल होंगे और/या इस सवाल के रूप में: How to make "use My::defaults" with modern perl & utf8 defaults?

QST1: अनुशंसित तरीका क्या है?

  1. जोड़ने use MySw::PerlDefs; तो

     
    package MySw::SomePackage; 
    use MySw::PerlDefs;   #my new "pragma" 
    

  2. मिलता है या PerlDefs पैकेज घोषणा के बाद शुरू ब्लॉक में संलग्न जोड़ना होगा? उदा .:

     
    package MySw::SomePackage; 
    BEGIN {use MySw::PerlDefs;} #my new "pragma" in the BEGIN block 
    

सवाल:

  • पसंदीदा तरीका क्या है?
  • अंतर और/या दोष क्या हैं?

Ps: मैं संकलन समय पर निष्कासित BEGIN की तुलना में समझता हूं, लेकिन उपर्युक्त संदर्भ में - यह "सरल उपयोग" से बेहतर नहीं है?

+0

[ 'Package' का उपयोग] (http://perldoc.perl.org/functions/use.html)' शुरू के रूप में ही है {पैकेज की आवश्यकता होती है; पैकेज-> आयात()} ' –

+0

क्या एक अपग्रेड किए गए पर्ल को स्थापित करने की कोई उम्मीद नहीं है, शायद पेर्लब्रू के साथ? कुछ आधुनिक विशेषताएं पुरानी पर्ल संस्करणों में उपलब्ध नहीं थीं ('// =', उदाहरण के लिए)। इसके अलावा सभी अच्छे नए बग फिक्स। – DavidO

+0

अपने प्रागमा को किसी मौजूदा एप्लिकेशन में पैच करने की कोशिश करना अच्छा नहीं होगा। कहा जा रहा है: 100+ मॉड्यूल वास्तव में इतना बड़ा नहीं है। 1000+ है। – duskwuff

उत्तर

3

एक BEGIN ब्लॉक में उपयोग को लपेटना काम नहीं करेगा; लेक्सिकल प्रागम्स का प्रभाव ब्लॉक के अंत से आगे नहीं बढ़ेगा।

की तुलना करें:

$ perl -e'BEGIN{ use Modern::Perl; } $x=42; print "$x\n"' 
42 
$ perl -e'use Modern::Perl; $x=42; print "$x\n"' 
Global symbol "$x" requires explicit package name at -e line 1. 
Global symbol "$x" requires explicit package name at -e line 1. 
Execution of -e aborted due to compilation errors. 
+0

ओएमजी हाँ। यह आसान है ... इतनी छोटी बात पूछने के लिए खुद से नफरत है ..; (thanx।;) – kobame