मैं वर्तमान में एक बहु-पर्यावरण पर्ल स्क्रिप्ट विकसित कर रहा हूं। जैसा कि आप सभी जानते हैं, बुरी तरह से किए जाने पर पर्यावरण कॉन्फ़िगरेशन जॉगलिंग काफी दर्द हो सकती है।क्या पर्ल मॉड्यूल लोडिंग में पैरामीटर पास करना संभव है?
package Cfg;
use strict;
use warnings;
my $gEnvironment = "DEBUG";#"PRODUCTION";
my %gConfig = (
DEBUG=>{MESSAGE=>"This is a dbg env.",URL=>"www.my-dbg-url.org"},
PRODUCTION=>{MESSAGE=>"This is a prod env.",URL=>"www.shinyprodurl.org"}
);
my $gMessage = defined $gConfig{$gEnvironment} ?
$gConfig{$gEnvironment}{MESSAGE} : die "Crappy environment";
sub Message { $gMessage = shift(@_) if (@_); $gMessage }
sub Url {
defined $gConfig{$gEnvironment} ?
$gConfig{$gEnvironment}{URL} : die "Crappy environment"
}
1;
तो, निम्न स्क्रिप्ट:
use strict;
use warnings;
use Cfg;
print Cfg::Message,"\n";
Cfg::Message("I'm a surcharged message.");
print Cfg::Message;
अगले उत्पादन का उत्पादन होगा जैसा कि मेरे पर्ल स्क्रिप्ट एक विन्यास मूल्य अधिभार उद्देश्य में कुछ आदेश पंक्ति पैरामीटर की अनुमति देनी चाहिए, मैं निम्नलिखित समाधान के साथ आया था:
This is a dbg env.
I'm a surcharged message.
बिंदु यह है कि मैं सीएफजी मॉड्यूल के लोडिंग के दौरान $ gEnvironment के मूल्य को परिभाषित करना चाहता हूं। यह मुझे मेरे सभी वातावरण में एक ही कॉन्फ़िगरेशन मॉड्यूल का उपयोग करने की अनुमति देगा।
क्या यह संभव है?