2010-07-21 6 views
6

क्या महत्व है और (मुझे लगता है कि यह वस्तु उन्मुख है) कुछ इस तरह का प्रभाव क्या है:"मॉड्यूल का उपयोग" के बाद कोड ब्लॉक का अर्थ क्या है?

use My::Confusing::Code 
{ 
    CITY => { MODIFY  => 1,   
       DEFAULT  => My::Even::more::complicated->func(), 
      }, 
    STATE => { MODIFY  => 1,   
       DEFAULT  => 'Concatenate()', 
      }, 
    COUNTRY => { MODIFY  => 1, 
       REQUIRED  => 0, 
       DEFAULT  => 'Gabon', 
       }, 
} 

क्या मेरे :: भ्रामक :: कोड पैकेज/मॉड्यूल/वर्ग सामान के साथ क्या करना होगा घुंघराले ब्रेसिज़ में। घुंघराले ब्रेसिज़ कोड कोड या हैश संदर्भ संलग्न करते हैं?

+0

एक होना चाहिए; अंतिम के बाद}, कम से कम अगर फ़ाइल में कोई और कोड है। – ysth

उत्तर

13

यह एक हैश संदर्भ है।

जब आप use Module::Foo @stuff; करते हैं, क्या हो रहा है परदे के पीछे है:

BEGIN { 
    require "Module/Foo.pm"; 
    Module::Foo->import(@stuff); 
}; 

आम तौर पर, मानकों import के लिए पारित किया प्रतीकों के लिए अपने नाम स्थान में निर्यात करने के लिए पूछने के लिए उपयोग किया जाता है। (ऐसा करने का सामान्य तरीका मानक Exporter मॉड्यूल से import सबराउटिन का उपयोग करना है।) लेकिन इस मामले में, मॉड्यूल लेखक ने एक कस्टम import विधि लिखा है जो हैशफ लेता है और इसके साथ सामान करता है।

+2

'आयात' विधि को लागू करने के लिए मॉड्यूल के कई अन्य कारण हैं। – mob

+0

धन्यवाद। हां, इस मामले में "आयात" फ़ंक्शन इसका उपयोग करने वाले मॉड्यूल के लिए प्रतीक तालिकाओं के अपने सेट में एक प्रविष्टि प्रारंभ करने के लिए पास किया गया हैश संदर्भ का उपयोग करता है। यह कोड प्रकार के एक पर्ल ढांचे को लागू करता है। – paz9

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