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 ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glaube ich eine benutzerdefinierte
import
Methode ist, was Sie nach:und woanders:
import
ist, was perl aufgerufen wird, wenn Sieuse
einige module. Bitte sehenperldoc -f
für die details.Hier ist, wie zu erreichen, was Sie wollen, aber ich glaube, Sie wäre besser gedient werden, indem Sie die vollständige Objekt-orientierte Strecke. Die folgende Lösung würde nur noch ein paar änderungen zu erreichen:
Und, um es zu nutzen: