perl - How to replace package name with a variable when using strictures -


मेरे पास दो पर्ल पैकेज हैं: pack_hash और pack_run
  पैकेज pack_hash; $ VERSION = '1.00'; @ आईएसए = क्यूडब्ल्यू (निर्यातक); @EXPORT_OK = qw (% hashInfo); $ हैशइनफ़ो {एबीसी} = ['ए', 'बी', 'सी']; 1;   
  पैकेज pack_run; स्टैंक्शंस का उपयोग करें; चेतावनियों का उपयोग करें; डेटा का उपयोग करें: Dumper; उपयोग करें pack_hash qw (% hashInfo); somethingDoing (); उप कुछ करना {my $ var1 = \% pack_hash :: hashInfo; # हैश संदर्भ प्रिंट Dumper ($ var1) हो रही है; ... ...} 1;   

क्या कोई मुझे किसी भी चर का उपयोग करके हैश-पैकेज ( pack_hash ) के नाम को बदलना संभव है, कृपया मुझे बताएं: < / P>

  मेरे $ pakVar = "pack_hash"; मेरा $ var1 = \% $ pakVar :: hashInfo;   

मैं जानता हूं कि यह गलत है / NOT_CORRECT है, लेकिन मैं इस प्रकार का प्रतीकात्मक रिफ रूपांतरण चाहता हूं, जब मैं कड़ाई का उपयोग कर रहा हूं मैं यह भी जानना चाहता था कि क्या eval के साथ ऐसा करना संभव है लेकिन मुझे एक अंतिम वैरिएबल चाहिए, यहां $ var1, जो कि विशेष हैश ( हैश इन्फोस ) का संदर्भ देगा;

नहीं, यह संभव नहीं है। लेकिन यह है:

  सख्त का उपयोग करें; चेतावनियों का उपयोग करें; प्रतीक qw & lt; qualify_to_ref & gt; उपयोग करें; मेरी $ pakVar = 'pack_hash'; मेरा $ var1 = * {qualify_to_ref ('hashInfo', $ pakVar)} {HASH};   

qualify_to_ref एक पैकेज चर का नाम लेता है और पैकेज का नाम लेता है और GLOB संदर्भ सूचक देता है, तो आप बस एचएसएच ग्लोब की स्लॉट आप ऐसा भी कर सकते हैं:

  मेरी $ var1 = \% {qualify_to_ref ('hashInfo', $ pakVar)};   

लेकिन यह बहुत ही तंग करना भी सख्त को बंद करना आसान है;

  मेरी $ var1 = do {कोई सख्त नहीं; \% {$ PakVar ':: हैशइनफ़ो'}; };   

मैं समझता हूं कि कुछ कोडिंग संस्कृतियों को "धोखाधड़ी" के रूप में सख्त या चेतावनियां बंद करने का विचार है। मुझे पता है कि मुझे इस तरह से एक छोटे से ब्लॉक में चेतावनी के वर्ग के एक वर्ग को बंद करने के बारे में कोड की समीक्षा की गई है मुझे पता था कि मैं कौन सा चेतावनी प्राप्त कर रहा था, इसलिए मुझे इसकी ज़रूरत नहीं थी। समीक्षक ने इसे इस तरह नहीं देखा

इस कारण से कुछ अनुभवी पर्ल-र्स ने कड़ी मेहनत को बंद करने के बारे में कुछ नहीं सोचा। लेकिन अगर आप ऐसा नहीं कर सकते हैं क्योंकि यह निवासी को बेचैन बनाता है - आप कर सकते हैं प्रतीक का उपयोग करें हालांकि, कुछ दुकानों के के खिलाफ पैकेज चर नियम हैं, इसलिए यह कभी भी एक मुद्दा बनने वाला नहीं है।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -