linux-l: perl-hashs mit dynamischen Variablen

Robert C. Helling helling at aei-potsdam.mpg.de
Fr Feb 9 11:34:58 CET 2001


On Fri, 9 Feb 2001, Ulrich Wiederhold wrote:

> 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...
> 

Ich glaube, was Du willst ist

#!/usr/local/bin/perl 

$hash{eins} = "hallo";
$hash{zwei} = ['nase', 'mund'];

foreach (keys %hash){
    if(ref($hash{$_})){
	eval("\@$_ = \@{\$hash{$_}};");
    }
    else{
	eval("\$$_ = \$hash{$_};");
    }
}

print "eins ist $eins\n";
print "zwei ist ". join('|', at zwei)."\n";


Gruesse
Robert


-- 
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO
Robert C. Helling        Institut fuer Physik
                         Humboldt-Universitaet zu Berlin
print "Just another      Fon +49 30 2093 7964      
       stupid .sig\n";	 http://www.aei-potsdam.mpg.de/~helling



Mehr Informationen über die Mailingliste linux-l