Hallo Falk,
$variTest "hallo Welt"
^....(=)
print "$vari"+"Test";
^.... Du meinst bestimmt .
Ich mach mal hier weiter, weil ich zu faul bin, Deine "Beispiele" zu kopieren ;-)
Es gibt natürlich mehrere Möglichkeiten, eval in den obigen Zusammenhang zu bringen.
-
Beim Erstellen der Variable:
eval '$variTest = "Hallo Welt"'; # initialisiert die Variable $variTest.
eval "$$name = "Hallo Welt""; # initialisiert ein Variable deren Bezeichner in $name steht.
eval { $$name = "Hallo Welt" } # s.o. -
Beim Auslesen
print eval "$$name"; # liefert den Wert der Variable deren Bezeichner in $name steht zurück
print eval { $$name } # s.o.
Zu Unterschieden zwischen Block- und Stringevaluierung siehe den von Frank erwähnten Abschnitt in der perldoc :-)
Gruß AlexBausW
P.S.: Noch eine Anmerkung zu Franks Posting:
Da man eigentlich immer das Pragma "use strict;" verwenden sollte (was Du ja sicherlich auch tust), musst Du imho & afaik entweder 'refs' davon "ausschließen", oder den Code in einem Block mit "no strict 'refs';" verwenden, sonst hagelt es Fehlermeldungen wegen Verwendung symbolischer Referenzen.
Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html