Jestem całkiem nowy w Perlu i staram się skompilować rekursywnie rekursywnie i nigdzie nie docierając. Próbowałem szukać tutoriali, aby dynamicznie budować hasze, ale wszystko, co mogłem znaleźć, to wstępne artykuły o hashe. Byłbym wdzięczny, gdybyś skierował mnie w dobrym kierunku lub zaproponował fajny artykuł/samouczek.Dynamicznie/rekursywnie buduje hasze w Perlu?
Próbuję odczytać z pliku, który ma ścieżek w postaci
one/two/three
four
five/six/seven/eight
i chcę zbudować hash jak
VAR = {
one : {
two : {
three : ""
}
}
four : ""
five : {
six : {
seven : {
eight : ""
}
}
}
}
Skrypt używam obecnie jest :
my $finalhash = {};
my @input = <>;
sub constructHash {
my ($hashrf, $line) = @_;
@elements = split(/\//, $line);
if(@elements > 1) {
$hashrf->{shift @elements} = constructHash($hashrf->{$elements[0]}, @elements);
} else {
$hashrf->{shift @elements} = "";
}
return $hashrf;
}
foreach $lines (@input) {
$finalhash = constructHash($finalhash, $lines);
}
Twoja linia 'my ($ hashrf, $ line) = $ _;' powinna raczej odczytać 'my ($ hashrf, $ line) = @_;' zamiast tego. –
Naprawiono :) Ale wciąż nic nie daje. Jeśli wydrukuję wartość 'hashrf' w pętli, zawsze jest to' '' ' –