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 making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2014-10-21 02:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (95 votes), past polls