mehrdimensionalen Hash traversieren
Danny
- perl
Hi,
eine Config-Datei wird in einen mehrstufigen Hash geparst:
$gruppe{$untergruppe}{$mitglied};
Der Hash wird korrekt aufgebaut, das habe ich bereits geprüft.
Jetzt sollen die Mitglieder dynamisch durchlaufen werden:
$untergruppe = "test";
while ( ($key, $val) = each ($gruppe{$untergruppe}) )
{
print " $key = $val <br>";
while ( ($k, $v) = each ($val) )
{
print " $k = $v <br>";
}
}
Der Code verursache eine Fehlermeldung (über CGI, daher keine genaue Fehlermeldung, bzw. nur interner Server-Error)
Was muß ich ändern, damit es funktioniert?
Ich vermute als Fehlerursache $val, weil es in der Schleife zum Skalar wird. Mit %val funktionert es aber auch nicht.
Im voraus vielen Dank für jegliche Hinweise.
MfG
Danny
Hi,
eine Config-Datei wird in einen mehrstufigen Hash geparst:
$gruppe{$untergruppe}{$mitglied};
Der Hash wird korrekt aufgebaut, das habe ich bereits geprüft.
Jetzt sollen die Mitglieder dynamisch durchlaufen werden:
#Alles wieder im gleichen Format ausgeben
foreach $sec (keys %data)
{ print "[$sec]\n";
foreach $key (keys %{$data{$sec}})
{ print "$key=$data{$sec}{$key}\n"; }
}
It means
foreach my $untergruppe(keys %gruppe){
print "Untergruppe: $untergruppe\n";
foreach my $member(keys %{gruppe{$untergruppe}}){
print "Member: $member\n";
}
}
Erwin
Wow! Danke für die schnelle Antwort. Respekt!
$gruppe{$untergruppe}{$mitglied};
Der Hash wird korrekt aufgebaut, das habe ich bereits geprüft.
Jetzt sollen die Mitglieder dynamisch durchlaufen werden:$untergruppe = "test";
while ( ($key, $val) = each ($gruppe{$untergruppe}) )
while ( my ($key, $val) = each %{$gruppe{$untergruppe})
{
print " $key = $val <br>";
while ( ($k, $v) = each ($val) )
while ( my ($k, $v) = each %$val )
{
print " $k = $v <br>";
}
}Der Code verursache eine Fehlermeldung (über CGI, daher keine genaue Fehlermeldung, bzw. nur interner Server-Error)
Ja, du kannst die Fehler in dem Logfile deines Servers finden, aber es gibt auch andere Möglichkeiten.
use CGI::Carp qw/fatalsToBrowser/;
Außerdem solltest du dringend use strict verwenden damit kannst du dir einen Haufen Tippfehler ersparen.
Struppi.
Danke Struppi!
Hab gerade die fatals zum Browser geschickt und einen Compiler-Fehler gemeldet bekommen. Nach der Anpassung auf
%{$gruppe{'untergruppe'}} etc.
funktioniert's jetzt :)