Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Recursively walk a hash to get to an element

by tlm (Prior)
on Mar 31, 2005 at 02:00 UTC ( #443660=note: print w/ replies, xml ) Need Help??


in reply to Recursively walk a hash to get to an element

There's an typo in the code; the code block in the reduce statement should be

{ \($$a->{$b}) }
Also, when I tried the code as given (after fixing the above typo), I got the error:
% perl rec_walk.pl Can't call method "List::Util::reduce" on unblessed reference at rec_w +alk.pl line 9.
Here's the full code of the script that caused that error:
use strict; my %myhash; $myhash{bedrock}{flintstone}{fred} = 3; my $ref = pointer_to_element(\%myhash, qw(bedrock flintstone fred)); sub pointer_to_element { require List::Util; return List::Util::reduce { \($$a->{$b}) } \shift, @_; }
I couldn't figure out why the error, so I switched the code to
use List::Util 'reduce'; sub pointer_to_element { return reduce { \($$a->{$b}) } \shift, @_; }
and it worked great. Tres cool.

the lowliest monk


Comment on Re: Recursively walk a hash to get to an element
Select or Download Code
Re^2: Recursively walk a hash to get to an element
by ihb (Deacon) on Mar 31, 2005 at 03:27 UTC

    The reason of the error is that reduce uses a prototype not yet seen when the return statement is compiled. It's therefore interpreted as indirect object syntax (method { STATEMENTS } LIST), being do { STATEMENTS }->method(LIST) with direct syntax. The way to fix this is to call &reduce like List::Util::reduce(sub { ... }, LIST).

    ihb

    See perltoc if you don't know which perldoc to read!

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (13)
As of 2015-07-07 13:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls