Struppi: require

Beitrag lesen

Befindet sich im einzubindenden script beispielsweise der Ausdruck:

$var = 'abc'

müsste meines Erachtens durch

require script.pl
print $var;

die Ausgabe:

abc erfolgen.

Warum ist das nicht so?

Bei mir ist das so.
Aber das ist kein guter Stil, da er nicht mehr strict ist.

Um Konfigurationsvariabeln einzulesen gibt es vielfältige Möglichkeiten.
Die einfachste ist in deiner ConfigDatei ein Hash zu deklarieren und das zu exportieren und dann auf die Keys zuzugreifen:

Ini.pm:

package Ini;

require Exporter;
@ISA = qw(Exporter);
@EXPORT =  qw(%INI);

our %INI = (
wert1 => 'test',

)

test.pl:

use Ini;

print $INI{wert1};

Das ist aber nicht sonderlich elegant, da du so z.b. Tippfehler nicht merkst.

Besser ist es eine funktion zu exportieren, die den Wet zurück gibt:

Ini.pm:

package Ini;

require Exporter;
@ISA = qw(Exporter);
@EXPORT =  qw(&getIni);
my %INI;

sub getIni
{
     my $k = shift;
     die "Schlüssel existiert nicht." unless exists $INI{$k};
     return $INI{$k};
}

%INI = (
wert1 => 'test',
);

1;
use strict;
use Ini;

print getIni('wert1');
print getIni('test');

Es gibt aber auch noch einen Haufen Module dafür, was man dann verwendet ist Geschmackssache.

Struppi.