मेरे पास पर्ल मॉड्यूल के दो अलग-अलग संस्करण हैं। वर्तमान में, महत्वपूर्ण स्क्रिप्ट पर्यावरण चर द्वारा निर्दिष्ट मॉड्यूल के संस्करण का उपयोग करती है और सिस्टम विभिन्न उपयोगकर्ताओं द्वारा चलाए जा रहे विभिन्न कार्यों पर निर्भर करता है। उपयोगकर्ता का पर्यावरण निर्धारित करेगा कि पर्ल मॉड्यूल का कौन सा संस्करण उपयोग किया गया था।मैं पर्ल मॉड्यूल पथ को गतिशील रूप से कैसे बदलूं?
अब मैं इसे पर्ल स्क्रिप्ट के अंदर निर्दिष्ट संस्करण में बदलना चाहता हूं, यानी पारित विकल्पों के आधार पर। दुर्भाग्य से, इस तरह कोड:
if ($new){ use lib "newdir"; }
else{ use lib "olddir"; }
use module;
काम नहीं करता है। पर्ल बस newdir और फिर olddir से @INC
और फिर स्क्रिप्ट चलाता है।
मैं गतिशील रूप से किस मॉड्यूल का उपयोग करने के लिए निर्दिष्ट करूं?
BEGIN {
if ($new) { unshift @INC, "newdir"; }
else { unshift @INC, "olddir"; }
}
use module;
तुम भी PERL5LIB
वातावरण चर सेट कर सकते हैं ताकि आप की जरूरत नहीं होगी: else
कोड संकलन समय पर चलाया जाएगा -
आपकी * अजीब * ब्रैकेटिंग शैली ने आपको एक संलग्न ब्लॉक के साथ छोड़ दिया है। (अब, एक ब्रैकेटिंग युद्ध शुरू करने के लिए!) – Axeman
ईक। धन्यवाद एक्समन। – mob
उल्लेखनीय है कि "lib का उपयोग करें" और @INC में हेरफेर करना हमेशा समकक्ष संचालन नहीं होता है। अधिक जानकारी के लिए दस्तावेज़ देखें। – jrockway