2012-04-25 15 views
11

मेरा previous question ने मेरी समस्या हल कर दी है, लेकिन मुझे समझ की कमी के साथ छोड़ दिया।कीवर्ड 'नो` वास्तव में पर्ल में क्या करता है?

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'); 

इस परीक्षा पास नहीं है, जो no ... इसका मतलब है कि मैं क्या लगता है कि यह करता है, जो प्रतीकों unimporting शामिल नहीं करता है। मैंने perldoc no पढ़ा है, लेकिन यह वास्तव में बल्कि अनजान प्रतीत होता है। इस कोड के परिणामों को देखते हुए मैं कहूंगा कि यह वही नहीं करता जो विज्ञापन करता है।

no क्या करता है? मुझे इसका उपयोग कब और क्यों करना चाहिए?

उत्तर

15

no पैकेज की unimport() कॉल करता है, जबकि useimport() पर कॉल करता है, दोनों चुपचाप उस मामले को छोड़कर जहां कोई वांछित सब नहीं मिलता है।

हालांकि, कुछ पैकेज - वास्तव में, ज्यादातर केवल प्रागमा मॉड्यूल - unimport() का समर्थन करते हैं।

+5

यह तर्क दिया जा सकता है कि 'निर्यातक' 'आयात' के साथ जाने के लिए 'आयात' को परिभाषित नहीं कर रहा है। – geekosaur

+0

@geekosaur, मैं सहमत हूं। (इस पर चर्चा की जा सकती है :)) – pilcrow

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