2011-03-22 22 views
7

Bu sorulmuş olsaydı üzgünüm, ama aramayı zor buldum.Perl sürümüne dayalı bir işlevi nasıl ekleyebilirim?

Perl 5.12'yi yerel olarak kullanıyorum ancak bazı makinelerimiz Perl 5.8.8 kullanıyor ve şimdilik güncellenmeyecek.

Denetim için platform 5.12'de 'say' kullanıyorum.

5.8.8'de söylemek için basit bir işlev yazdım ama 5.12'de kullanmak istemiyorum.

Perl'imin eski sürümünde söyleme işlevimi kullanmanın ve 5.12'deki 'yerleşik' sürümünü kullanmanın bir yolu var mı?

+0

bir çözüm '[Perl6 olduğu :: Say' ] (http: // p3rl-org/Perl6 :: Say). – daxim

cevap

9

Sen $^Vspecial variable Perl yorumlayıcısı sürümünü belirlemek için kullanabilirsiniz:

BEGIN { 
    if ($^V ge v5.10.1) { # "say" first appeared in 5.10 
     require feature; 
     feature->import('say'); 
    } 
    else { 
     *say = sub { print @_, "\n" } 
    }  
} 
+0

Bu komut dosyasını çalıştırmayı denediğimde, aşağıdaki hatayı alıyorum: '" Ad "main :: say" sadece bir kez kullanıldı: C: ​​\ src \ map.pl satırında olası yazım hatası "" – chollida

+0

@chollida Bir uyarı , bir hata değil. –

+0

başarısından sonra 'uyarı vermeyin', teşekkürler. – chollida

8

Bu çalışması gerekir: Bu sorunun belirli

BEGIN{ 
    no warnings 'once'; 
    unless(eval{ 
    require feature; 
    feature->import('say'); 
    1 
    }){ 
    *say = sub{ 
     print @_, "\n"; 
    } 
    } 
} 
İlgili konular