Ist es möglich, Parameter für die ein Perl-Modul geladen wird?

Ich bin derzeit auf der Entwicklung einer multi-Umgebung die perl-Skript. Wie Sie alle wissen werden, Umwelt Konfiguration jonglieren könnte durchaus ein Schmerz, wenn schlecht gemacht. Als mein perl-script erlauben muß, einige Kommandozeilen-Parameter in einer Konfiguration Wert überlastung Zweck, ich kam mit der folgenden Lösung :

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;

So, das folgende Skript :

use strict;
use warnings;
use Cfg;
print Cfg::Message,"\n";
Cfg::Message("I'm a surcharged message.");
print Cfg::Message;

Produzieren würde die nächste Ausgabe:

This is a dbg env.
I'm a surcharged message.

Der Punkt ist, ich möchte definieren $gEnvironment Wert beim laden der Cfg-Modul.
Dies würde mir erlauben, um die gleiche Konfiguration Modul in alle meine Umgebungen.

Ist das möglich ?

InformationsquelleAutor OMG_peanuts | 2010-10-07
Schreibe einen Kommentar