我目前正在開發一個多環境的perl腳本。衆所周知,如果做得不好,環境配置的雜耍可能會非常痛苦。由於我的perl腳本必須允許在配置值過載用途的一些命令行參數,我想出了以下解決方案:是否可以將參數傳遞給Perl模塊加載?
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.
問題是我想在加載Cfg模塊期間定義$ gEnvironment的值。 這將允許我在我的所有環境中使用相同的配置模塊。
這可能嗎?