use und Variablen

29/10/2009 - 12:23 von Helmut Schneider | Report spam
Hi,

# cat ./test.pl
#!/usr/bin/perl

use strict;
use warnings;

use lib "./";
our $myVarA = 1;
our $myVarB = 2;
use myTest;

print "\$myVarA = $main::myVarA";
print "\$myVarB = $main::myVarB";
# cat ./myTest.pm
package myTest;

print "\$myVarA = " . $main::myVarA . "";
print "\$myVarB = " . $main::myVarB . "";

1;
# perl ./test.pl
$myVarA $myVarB $myVarA = 1
$myVarB = 2
#

Soweit ich "use" verstanden habe, war das zu erwarten, da "use" vor dem
Kompilieren stattfindet. Lösen liese sich das "Problem", indem man
"use" durch "require" ersetzt.
Nun lese ich aber überall, dass man "use" einem "require" wo immer
möglich vorziehen soll. Ist obiges so eine Ausnahme, oder gibt es auch
einen "use"-Weg?

Ziel ist es, in einem package sicher zu stellen, dass bestimmte $main::
Variablen gesetzt wurden.

Danke und Gruß, Helmut

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
 

Lesen sie die antworten

#1 ReneeB
29/10/2009 - 12:48 | Warnen spam
Du kannst Die Variablenzuweisungen in einem BEGIN-Block machen, das
wird dann auch zur Compile-Zeit ausgeführt. Dann kommt es nur noch auf
die Reihenfolge von BEGIN-Block und use-Anweisung an (der BEGIN-Block
muss *vor* der use-Anweisung kommen)...


#!/usr/bin/perl

use strict;
use warnings;

use lib "./";

BEGIN{
our $myVarA = 1;
our $myVarB = 2;
}

use myTest;

print "\$myVarA = $main::myVarA";
print "\$myVarB = $main::myVarB";

Ähnliche fragen