AlexBausW: Variable dereferenzieren

Beitrag lesen

Hi Cruz,

Die geheime Variable soll $secret heißen und den wert "humbug" haben.
D.h. also im Query String steht irgendwo var_name=secret
Also habe ich im Script ein $input{'var_name'}="secret".

Aus Deinen Angaben schließe ich, daß Du mit einem Skript im Browser einen Link erzeugst, der einen Variablennamen als Parameterwert angehängt bekommt:
Allerdings vergisst afaik Perl Variablen und deren Werte, wenn Du das Skript beendest, und ein neues aufrufst (über den vom ersten Skript generierten Link).
Durch beenden des Skriptes verlässt Du ja den Prozess des ersten Skriptes, und alle reservierten Speicherbereiche (mit Variablen oder referenzierte Bereiche) werden wieder freigegeben (bitte korrigiert mich, wenn ich falsch liege :-).
Eine Möglichkeit wäre allerdings, eine ID zu generieren, die Du als Dateinamen (zur Speicherung der geheimen Variable) und als Parameter für den Link in der Ausgabe verwenden kannst. Beim Aufrufen des zweiten Skriptes könnte dieses die Datei unter dieser ID öffnen, und schon wäre die Variable wieder da :-).
Jedoch sollte bei Parameterübergabe überprüft werden, ob nicht irgendwelcher Unfug im Parameter steht (wenn jemand das Skript über die Adresszeile aufruft), der Schaden anrichten könnte.

Zum Dereferenzieren ("echte" Referenzen sind - ich hab`s noch mal nachgeschlagen - erst ab Perl 5 möglich) :

Nach den Referrenz Regeln müsste also $$input{'var_name'} =  ...[(Anm. d. A.: == !? :-)]... "humbug" sein. Ist es aber nicht.

$var = $$hash{key} ist schon korrekt, genauso wie das folgende Konstrukt:

auch nicht so:  ${$input{'var_name'}}

auch nicht so:  $($input{'var_name'})

das geht afaik nicht!

schon gar nicht so: eval($$input{'var_name'})

und das denke ich auch nicht!

Wieso klappt hier die Referenzierung nicht?

Siehe Calocybe :-) (<g>Ich lösch aber nicht jetzt nicht den Großteil des Postings, um eine Sinnverzerrung zu vermeiden </g>)

Und wie kann ich es DOCH referenzieren) ;)

Siehe oben :-)

Gruß AlexBausW