linux-l: perl-hashs mit dynamischen Variablen

Ulrich Wiederhold U.Wiederhold at gmx.net
Fr Feb 9 10:17:16 CET 2001


Hallo,
mal wieder Perl...

Ich habe ein hash, bei dem einem key entweder ein Skalar oder mehrere
Werte als Referenz-Array zugeordnet sind.

Dieses Values möchte ich nun in Skalare und Arrays schreiben, die aus
dem Key generiert werden.

Also, wenn $value($key) = Referenz, dann speichere value[i] in '$' .
'$key' . '[' . $i . ']', wenn keine Referenz (sondern Skalar), dann
speichere '$' . '$key' = $value.

Dazu benötige ich wohl "eval". Aber trotz stundenlangem Probierens ist
mir bisher nix gelungen, außer das es beim Aufruf jetzt schon keine
Fehlermeldungen mehr gibt...

Ideen? Es geht um die 2 Zeilen mit eval, der Rest funzt und in dem hash
ist auch alles ok.

Im Perl-Text sieht das dann so aus:
 while (($key, $value) = each(%config))
     {
      $i = 0;
      if (ref $value)
	{
	  while ($i <= $#{$config{$key}})
  	    {
    	      eval"'\$' . '$key' . '[' . $i . ']' = ${$config{$key}}[$i]}";
	      $i++;
            }
	}
      else
	{
	eval "'\$' . '$key' = $config{$key}";
        }	
     }


Gruß
Uli



Mehr Informationen über die Mailingliste linux-l