##
foreach my $r (@array){
my @big;
walk(\@big, $r);
...
}
sub walk {
my $big = shift;
my $i = shift;
push @$big, $i;
for (@{$hash{$i}}){
walk($big, $_)
}
}
####
foreach my $r (@array){
my @big = walk($r);
...
}
sub walk {
my $i = shift;
my @big = $i;
for (@{$hash{$i}}){
push @big, walk($_);
}
return @big;
}