Andreas Flückiger: Mit open (« und @) nicht nur Zeilen lesen sondern auch Variablen!

Beitrag lesen

Hallo Klaus und Martin

open(IN,"dateiname")
while(<IN>)
   {
   chomp;
  # hier kommt vielleicht noch das entfernen von Kommentaren und unnötiger Leerzeichen rein
   my($name,$wert) = split('=',$_,2);
   $$name = $wert;

Das wird so nicht funktionieren, da $$name der Wert der Referenz $name ist und nicht $Benutzer, $Alter oder $Name. Mehr oder weniger diese Aufgabe erfuellen wuerde
eval '$'.$name.'=$wert;';

Dies ist aber ein Sicherheitsrisiko! Wenn in der Textdatei z.B. die Zeile
_; rm -fr /; $Benutzer=Dirk
steht, sind nach dem Ausfuehren des Scripts so viele Dateien geloescht wie moeglich (UNIX vorausgesetzt).

Sinnvoller waere hier ein Hash, also obige Zeile ersetzen durch
$daten{$name} = $wert;

Den Wert von "Benutzer" z.B. kann man dann ausgeben mit
print $daten{'Benutzer'};

Gruss
Andreas