How do I access a constant in Perl whose name is contained in a variable? -


मेरे पास पर्ल में घोषित स्थिरांकों का एक सेट है:

  स्थिर C1 = & gt; 111; स्थिर C2 = & gt; 222; .. स्थिर C9 = & gt; 999; मेरा $ which_constant = "C2";  

मैं कैसे एक पर्ल अभिव्यक्ति का निर्माण कर सकता हूँ, जो $ which_constant पर आधारित है, इस चर के मान के नाम से स्थिरांक के मान प्राप्त करते हैं - उदा। "222"।

कृपया ध्यान दें कि मैं ऊपर की किसी भी शर्त को परिवर्तित नहीं कर सकता - यह एक वास्तविक परिदृश्य का सरलीकरण है: मेरे पास एक मॉड्यूल है (जिस पर मेरा कोई नियंत्रण नहीं है) जिसमें से ये स्थिरांक हैं आयात किया। कमांड लाइन से उपयोगकर्ता द्वारा स्थिरांक का नाम दिया जाता है मुझे उचित स्थिरांक के मूल्य का उपयोग करने की आवश्यकता है।

मैं दीवार के खिलाफ मेरे सिर को मार रहा हूं (ज्यादातर सभी प्रकार के अजीब ग्लोब निर्माण) लेकिन उनमें से कोई भी काम नहीं करता है।

पुनश्च अगर समाधान अपने मूल मॉड्यूल के अंदर स्थिरांक तक पहुंचता है - मेरा :: स्थिरांक :: सी 2 (उन्हें आयात करने की आवश्यकता के बिना) कहें, तो इससे भी बेहतर है, लेकिन जरूरी नहीं है - मैं सही स्थिरांक को मुख्य :: आसानी से मेरा :: स्थिर-> आयात ($ जो_कंस्टेंट) का उपयोग कर रहा है। और हां, इसे ऊपर छोड़ने के लिए, डिफ़ॉल्ट रूप से निर्यात नहीं किया जाता है, इसलिए स्पष्ट आयात () कॉल की आवश्यकता होती है।

कुछ चीज़ें जो मैंने कोशिश की हैं:

  • मुख्य :: $ जो_कंस्टेंट - वाक्यविन्यास त्रुटि

  • मुख्य :: $ {that_constant} - वाक्यविन्यास त्रुटि

  • $ {* $ which_constant} - खाली मान देता है

  • * $ what_constant - रिटर्न "* मुख्य :: सी 2"

  • $ {* $ {* which_constant}} - खाली

द्वारा परिभाषित स्थिरांक सिर्फ सब-रूटिन्स हैं यदि आप एक स्ट्रिंग में निरंतर का नाम रखते हैं, तो आप विधि आविष्कार वाक्यविन्यास का उपयोग कर सकते हैं:

  #! / Usr / bin / perl -l सख्त; चेतावनियों का उपयोग करें; स्थिर C1 = & gt; 111; स्थिर C2 = & gt; 222; प्रिंट __PACKAGE __- & gt; $ _ क्यूडब्ल्यू (सी 1 सी 2); # या प्रिंट मुख्य- & gt; $ _ क्यूडब्ल्यू (सी 1 सी 2);  

इस तरह, यदि आप निरंतर उपयोग करने की कोशिश करते हैं जो परिभाषित नहीं है, तो आपको एक त्रुटि मिल जाएगी।


Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -