in reply to Recursive search in nested hash for selective keys
Maybe Data::Find would be of use? It will traverse an arbitrary data structure and allows you to define your own 'match' definition :
The match expression can be * a scalar * a regular expression * a code reference * undef When the match expression is a code ref it will be passed each element + in the data structure in turn and should return true or false. my $iter = diter $data, sub { my $v = shift; defined $v && !ref $v && $v % 2 == 1; }; while ( defined ( my $path = $iter->() ) ) { print "$path\n"; } Note that the match code will see all of the elements in the data stru +cture - not just the scalars. If the match expression is undef it will match those elements whose va +lue is also undef.
Then you can just parse the 'path' to get the data you want from any matching values.
Hope this helps,
|
|---|