Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: checking if hashref value exists based on a dynamic array

by kyle (Abbot)
on Aug 08, 2008 at 15:15 UTC ( [id://703141]=note: print w/replies, xml ) Need Help??


in reply to Re: checking if hashref value exists based on a dynamic array
in thread checking if hashref value exists based on a dynamic array

Did you try this? Generally, "$hash->{shift}" is interpreted as "$hash->{'shift'}", but I think you mean "$hash->{shift()}".

Also, this and other solutions I've seen here seem to ignore the possibility of running into a non-hash somewhere along the way.

use Test::More 'tests' => 5; sub deep_exists { my $hash = shift; my $key = shift; return 0 if ( ref $hash ne ref {} || ! exists $hash->{$key} ); return deep_exists( $hash->{$key}, @_ ) if @_; return 1; } my %h; $h{there}{also}{yes} = 1; $h{hash}{shift}{scalar} = 1; ok( deep_exists( \%h, 'there', 'also', 'yes' ), 'there also yes' ); ok( deep_exists( \%h, 'there', 'also' ), 'there also' ); ok( ! deep_exists( \%h, 'there', 'also', 'no' ), 'there also no' ); ok( deep_exists( \%h, 'hash', 'shift', 'scalar' ), 'hash shift scalar' + ); ok( ! deep_exists( \%h, 'hash', 'shift', 'scalar', 'hash' ), 'hash shift scalar hash' );

Replies are listed 'Best First'.
Re^3: checking if hashref value exists based on a dynamic array
by ikegami (Patriarch) on Aug 08, 2008 at 20:32 UTC

    Also, this and other solutions I've seen here seem to ignore the possibility of running into a non-hash somewhere along the way

    Mine (Data::Diver) checks.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://703141]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2024-04-19 04:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found