Actualmente estoy desarrollando una secuencia de comandos de perl multi-entorno. Como todos ustedes saben, los malabares de configuración del entorno podrían ser bastante dolorosos si se hacen mal. Como mi script de perl debe permitir que algunos parámetros de línea de comandos en un propósito de sobrecarga valor de configuración, me encontré con la siguiente solución:¿Es posible pasar parámetros a la carga de un módulo 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;
Por lo tanto, la secuencia de comandos siguiente:
use strict;
use warnings;
use Cfg;
print Cfg::Message,"\n";
Cfg::Message("I'm a surcharged message.");
print Cfg::Message;
produciría la siguiente salida:
This is a dbg env.
I'm a surcharged message.
el punto es que quiero para definir el valor de $ gEnvironment durante la carga del módulo cfg. Esto me permitiría usar el mismo módulo de configuración en todos mis entornos.
¿Esto es posible?