2012-04-25 23 views
11

Benim previous question benim sorunumu çözdü, ama bana anlayış eksikliği ile bıraktı.`Hayır 'anahtar kelimesi Perl'de ne yapar?

use 5.014; 
use warnings; 
use Test::More; 

# still has carp after no Carp 
package Test0 { 
    use Carp qw(carp); 
    sub new { 
     my $class = shift; 
     my $self = {}; 

     carp 'good'; 

     bless $self, $class; 
     return $self; 
    } 
    no Carp; 
} 

my $t0 = Test0->new; 

ok(! $t0->can('carp'), 'cannot carp'); 

Bu test bunu semboller unimporting içeren, yapar ne düşündüğünü yapmaz no ... demektir geçmez. Ben perldoc no okudum, ama gerçekten oldukça aydınlatıcı gibi görünüyor. Bu kodun sonuçları göz önünde bulundurulduğunda, reklamını tam olarak yapmadığını söyleyebilirim.

no ne yapar? Ne zaman ve neden kullanmalıyım? use hem sessizce hiçbir istenen alt bulunursa durum atlanarak import() çağırır oysa

cevap

15

no, bir paket en unimport() çağırır. Ancak, birkaç paket - aslında sadece pragma modülleri - unimport()'u desteklemektedir.

+5

“İhracatçı” nın bir “unimport” u tanımlamaması onun “import” ile gitmek için bir hata olduğu tartışılabilir. – geekosaur

+0

@geekosaur, Katılıyorum. (Tartışılabilir :)) – pilcrow