##
sub walk
{
my( $v, @path ) = @_;
foo( @path ) or return; # true means recurse
if ( keys %$v )
{
for my $k ( sort keys %$v )
{
walk( $v->{$k}, @path, $k );
}
}
}
####
sub walk
{
my( $cb, $v, @path ) = @_;
$cb->( @path ) or return; # true means recurse
if ( keys %$v )
{
for my $k ( sort keys %$v )
{
walk( $cb, $v->{$k}, @path, $k );
}
}
}