strings zu variablen? aehnlich "eval" in javascript - aber wie?
Falk Pauser
- cgi
hi!
ich habe ein simples problem:
$variTest "hallo Welt"
print "$vari"+"Test";
das ganze soll bewirken, dass aehnlich "eval()" in javascript eine variable aus einem string gebildet wird. ist das moeglich? und wie geht das am einfachsten?
mfg
-p-
Hi,
das ganze soll bewirken, dass aehnlich "eval()" in javascript eine variable aus einem string gebildet wird. ist das moeglich? und wie geht das am einfachsten?
*hüstel* mit eval.
Übrigens ist das eine Perl-Frage und hat nicht das geringste mit CGI zu tun.
Cheatah
hi cheata,
*hüstel* mit eval.
Übrigens ist das eine Perl-Frage und hat nicht das geringste mit CGI zu tun.
danke für deine antwort - ich bin also auf dem richtigen weg (kann dein hüstel schon verstehen) - habenauch schon einiges versucht, bekomme aber nicht das gewünschte ergebnis - könntest du mit einem klitzekleinen beispiel dienen?? danke!
mfg
-p-
hi!
das ganze soll bewirken, dass aehnlich "eval()" in javascript eine
variable aus einem string gebildet wird. ist das moeglich? und wie
geht das am einfachsten?
=== cut ===
#!/usr/bin/perl
$varname = "newvar";
${$varname} = "Hello World!";
print $newvar;
=== cut ===
eval() gibt es übrigens auch in Perl, siehe:
perldoc -f eval
Aber obige Methode ist für diesen Zweck natürlich besser geeignet.
bye, Frank!
hi frank!
=== cut ===
#!/usr/bin/perl$varname = "newvar";
${$varname} = "Hello World!";
print $newvar;
=== cut ===
danke!! das war genau, was ich suchte (wie einfach... naja, aber man muss es eben trotzdem wissen:)
mfg
-p-
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