Alex,
$a = 3;
%c = ('b' => 'a');
print ${$c{'b'}}; # hier wird der Wert von $a, also 3 ausgegeben.Stellt sich eigentlich nur noch die Frage, warum Cruz hiermit Probleme hatte
»»»»»»> auch nicht so: ${$input{'var_name'}}Ich fand die Idee von Dir gut und hab sie gleich ausprobiert, bin aber auf folgendes Problem gestoßen:
$secret = "Hallo Welt";
$input{'var_name'} = 'secret';$a = $input{'var_name'};
%c = ('b' => 'a');
print ${$c{'b'}};Ob über $a oder direkt an $c{'b'} überwiesen (ob das auch mit der DB geht ? {Deutsche Bank natürlich, und nicht Deutsche Bundesbahn ;-)}) , heist das Ergebnis nun "secret" !
Ist doch eigentlich auch klar, oder?
$a = $input{'var_name'}; Setzt $a auf 'secret'. Da über $c{'b'} ein 'a' zurückgegeben wird, erhalt man nun auch über die dereferenzierung ${...} den Wert von $a also 'secret'.
Dein Beispiel müßte also durch eine weitere Dereferenzierung zum Laufen zu bringen sein:
print ${${$c{'b'}}};
Ich frage mich nur, warum Du hier einen solchen Weg gehst. In Deinem Beispiel hast Du doch schon ein Hash namens input. Verwende dieses enstelle von c und benutze 'var_name' als Index:
${$input{'var_name'}}
Oder anders gesagt - so wie ursprünglich mal von Cruz angedacht ...
Ich bleibe also dabei: Eigentlich müßte es so funktionieren, wie Cruz es probiert hat, aber ...
Grüß,
Jörk