2010-06-04 17 views
6

वर्तमान में लोड किए गए रूट नेमस्पेस की सूची प्राप्त करने के लिए keys %:: का उपयोग करते समय, Internals:: पैकेज डिफ़ॉल्ट रूप से लोड किया जाता है (UNIVERSAL:: और कुछ अन्य के साथ)। हालांकि, मैं कार्यों के लिए किसी भी प्रलेखन Internals::पर्ल के अंतर्निहित 'आंतरिक :: `पैकेज के लिए प्रलेखन कहां है?

keys %{Internals::} रिटर्न SvREFCNT hv_clear_placeholders hash_seed SvREADONLY HvREHASH rehash_seed

ये सब शायद पर्ल के सी एपीआई डॉक्स में देखा जा सकता है में नहीं मिला है, लेकिन उनके लिए कोई पर्ल स्तर प्रलेखन है? क्या पैकेज स्थिर है? इसका उपयोग कई कोर मॉड्यूल (Hash::Util एक के लिए किया जाता है), इसलिए मुझे लगता है कि यह है, लेकिन दस्तावेज़ीकरण की कमी थोड़ा परेशान है।

मुझे पर्ल वितरण (अलग नाम शायद?) में Internals.pm नहीं देखा गया था, और यह सीपीएएन पर Internals मॉड्यूल नहीं है।

नोट: मैं पूरी तरह से समझता हूं कि Internals:: में कार्य संभावित रूप से खतरनाक हैं, और मेरे मन में कोई विशेष उपयोग नहीं है। मैं Hash::Util के स्रोत के माध्यम से पढ़ रहा था और इसके पार आया।

उत्तर

5

आईआईआरसी कोड Internals.pm नहीं है लेकिन libinternals.c है। ऐसा लगता है कि वे universal.c in Perl 5.8 में थे लेकिन माइग्रेट हो गए।

03/2009 और पर्ल 5.10 के अनुसार उन्हें this perlmonks thread के अनुसार दस्तावेज नहीं किया गया था।

इसके अलावा, एक ही धागे में, ysth कहता है:

universal.c में Undocumented बातों पर निर्भर नहीं होना चाहिए; उन्हें केवल कोर मॉड्यूल द्वारा उपयोग किया जाना चाहिए। को को तब भी बदलने के लिए, जब भी आवश्यक हो, उन्हें उद्देश्य पर दस्तावेज नहीं किया गया है। उन प्रयोजनों के लिए, कोड पर्याप्त दस्तावेज़ीकरण है।

+1

'universal.c' में टिप्पणियां बहुत अच्छी हैं:'/* यह खतरनाक सामान है। */'...'/* मुझे आशा है कि आप वास्तव में जानते हैं कि आप क्या कर रहे हैं। */' –

+0

" ... कोड पर्याप्त दस्तावेज पर्याप्त है "- जो लोगों को वर्तमान कार्यान्वयन के खिलाफ कोड लिखने से रोकता है और परिवर्तनों के दौरान इसे तोड़ने से रोकता है। – Ether

+0

आपके द्वारा पहले प्रदान किया गया लिंक - http://perlbin.sourceforge.net/perlcompiler/perl.internals.pdf - दिलचस्प लग रहा है, हालांकि यह काफी पुराना प्रतीत होता है। – Ether

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