sub traverse { my ($b, $h) = @_; return ref $h ? map traverse([ @$b, $_ ], $h->{$_}), keys %$h : ( join ',', (@$b, $h) ) . "\n"; } print traverse([], \%hash);