User since
2005-07-11
120
Artikel
BenutzerIn
Hallo, gibt es eine möglich keit, eine globale Variable auch für eval zugriffbar zu machen? Das Problem ist, dass ich in meinem Code eine Variable habe. Dann rufe ich eine Funktion in einem externen Package auf, welche dann wiederum mit eval code ausführt. Der Code in eval soll nun aber auf die variable aus dem Hauptprogramm zugreifen. Geht das irgendwie?
User since
2005-07-11
120
Artikel
BenutzerIn
ich scheine das wieder falsch zubenutzen:
our $x = "x";
package->method;
und die method macht:
open ...
while ...
eval ...
Aber das geht leider nicht. Woran kann das liegen???
User since
2005-07-11
120
Artikel
BenutzerIn
package Foo;
our $bar; # declares $Foo::bar for rest of lexical scope $bar = 20;
package Bar;
print $bar; # prints 20
Das ist doch das, was ich mache, nur das das ich das package in einer anderen Datei haben.
User since
2003-08-21
2614
Artikel
ModeratorIn
Die andere Datei hat auch einen anderen lexical scope. Vielleicht hilft Dir Exporter weiter? (Hat auch eine perldoc-Seite)
User since
2004-01-29
828
Artikel
BenutzerIn
Steht doch alles im perldoc von our! (Ich gehe mal davon aus das beide Skripte/Module geladen sind...)
our $bar; # declares $Foo::bar for rest of lexical scope
Was sagt dir dieser Kommentar? :)
User since
2005-07-11
120
Artikel
BenutzerIn
nix, weil ich nicht weis, was ein lexical scope ist
User since
2005-07-11
120
Artikel
BenutzerIn
Das mit dem Exporter habe ich, obwohl ich die Seite von perldoc.perl gelesen habe, nicht verstanden. Was ist der unterschie zwischen Exporter und exporter_ok?
Ich habe das Problem jetzt einfach mit main::variable gelöst.
User since
2003-08-21
2614
Artikel
ModeratorIn
exporter_ok sagt mir nichts. Meinst Du @EXPORT_OK (in Großbuchstaben und zwei Buchstaben weniger)? Das ist ein Array von Namen, die standardmaessig exportiert werden, wenn der Benutzer nichts angibt (wie in "use Modul"). Hingegen werden die Namen in @EXPORT nur dann exportiert, wenn der Benutzer es will (wie in "use Modul qw(blah)")