Attualmente sto sviluppando uno script perl multi-environment. Come tutti sapete, la giocoleria per la configurazione dell'ambiente potrebbe essere un bel problema se mal fatta. Come il mio script perl deve consentire alcuni parametri della riga di comando in uno scopo sovraccarico di valore di configurazione, sono venuto con la seguente soluzione:È possibile caricare i parametri in un modulo Perl caricando?
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;
Così, il seguente script:
use strict;
use warnings;
use Cfg;
print Cfg::Message,"\n";
Cfg::Message("I'm a surcharged message.");
print Cfg::Message;
produrrebbe l'output successivo:
This is a dbg env.
I'm a surcharged message.
Il punto è definire il valore di $ gEnvironment durante il caricamento del modulo Cfg. Questo mi permetterebbe di usare lo stesso modulo di configurazione in tutti i miei ambienti.
È possibile?