2012-06-17 11 views
6

Gerçekten eski bir perl sistemi (yaklaşık 8-10 yaş) var, ama büyük bir tane (100+ pm dosyaları). Şimdi bir sebepten dolayı "yeniden biçimlendirmek" gerekiyor - adım adım. i halletmek istediğini ilk şeyKendi pragma'mı eski perl'e eklerken doğru yolu

biri her modülün içine benim pragma eklemek geçerli:

use MySw::PerlDefs; 

Modern::Perl gibi şeyler içeriğinin nasıl olacağının ve/veya bu soruya gibi: How to make "use My::defaults" with modern perl & utf8 defaults?

QST1: Önerilen yol nedir?

  1. yüzden

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

  2. olsun veya paket ilanı sonrasında BEGIN blokta kapalı PerlDefs katacak use MySw::PerlDefs; ekleyerek? ör .:

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

Sorular:

  • tercih edilen yöntem nedir?
  • Farklılıklar ve/veya dezavantajlar nelerdir?

Ps: Ben derleme zamanında exectuted BEGIN'e daha anlıyorum ama yukarıdaki bağlamda - bu "basit kullanım" daha iyi değil mi?

+0

[ 'Package' kullanmak] (http://perldoc.perl.org/functions/use.html) BEGIN 'ile aynıdır {paket gerektirir; Paket-> import()} ' –

+0

Perlbrew ile belki de yükseltilmiş bir Perl yüklemek için bir umut yok mu? Bazı modern özellikler eski Perl sürümlerinde mevcut değildi (örneğin, // = '). Ayrıca tüm güzel yeni hata düzeltmeleri. – DavidO

+0

Pragma'larınızı mevcut bir uygulamaya yamaya çalışmanız iyi olmayacaktır. Bu söyleniyor: 100+ modüller gerçekten o kadar büyük değil. 1000+ olduğunu. – duskwuff

cevap

3

BEGIN bloğundaki kullanımı sarmak işe yaramaz; Sözcüksel pragmaların etkisi, bloğun sonunun ötesine uzanmayacaktır.

karşılaştır:

$ 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

OMG YES. Bu basit ... Kendime çok önemsiz bir şey sorduğum için nefret ediyorum .. (thanx.;) – kobame

İlgili konular