Thread eval (9 answers)
Opened by Froschpopo at 2006-03-03 01:12

Gast Gast
 2006-03-08 10:47
#63430 #63430
Hallo!

Dazu habe ich auch eine Frage/Problem ...

Ich habe ein Perl-Script geschrieben, das von Usern via "Makro" erweitert werden kann. Dieses Makro ist eine einfache sub, die in einem externen Modul in das Script geladen wird und via eval() ausgeführt wird.

Bsp:

Code: (dl )
1
2
3
4
5
# Script / Hauptprogramm

use externe_makros;
my $test=12;
eval("externe_makros::makro1(\$parameter1)");


Soweit auch alles super. Wenn aber nun das makro1 aus dem externen Modul eine Variable ändern soll, z.B. $test, dann klappt das nicht ... das Lesen der Variable aber wunderbar.

Code: (dl )
1
2
3
4
5
# Modul: externe_makros

sub makro1 {
$main::test=42;
}


Innerhalb der sub scheint das Setzen auch zu klappen. Also ein "print $main::test" in der sub bringt das korrekte Ergebnis (42). Ein "print $test" im Script selber liefert 12 ...

Nun meine Frage :roll: Wie kann ich in dem Makro eine Variable im Hauptprogramm/Script neu setzen? Wo liegen die Grenzen von eval()? Wo ist der Unterschied zwischen String und Block eval?

Ich hoffe, Ihr versteht mein Anliegen ...

Vielen Dank und schöne Grüße,
chris

View full thread eval