Beefy Boxes and Bandwidth Generously Provided by pair Networks Joe
P is for Practical
 
PerlMonks  

Re^4: Problem with -d inside find sub

by randian (Acolyte)
on Apr 27, 2012 at 14:18 UTC ( #967644=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Problem with -d inside find sub
in thread Problem with -d inside find sub

Weird. I wonder why given/when blocks would handle hash lexicals differently than any other kind of block. Definitely seems like a perl bug.


Comment on Re^4: Problem with -d inside find sub
Re^5: Problem with -d inside find sub
by Anonymous Monk on Apr 28, 2012 at 11:33 UTC
    The problem is with local and lexical $_
    Example:
    use 5.010; sub my_sub (&) { my $code = shift; local $_ = '1234'; $code->(); } my_sub { say }; given ("test") { when ("test") { my_sub { say }; } }
    Output:
    1234 test
    Why?
    Because my $_ (lexical - from the given/when blocks ($_ = 'test')) has a higher priority (aka is in the block where you are) than the local $_ (local - from the my_sub ($_ = '1234')

    How to fix this?
    use 5.010; sub my_sub (&) { my $code = shift; local $_ = '1234'; $code->(); } my_sub { say }; sub my_sub2 { my_sub { say }; } given ("test") { when ("test") { my_sub2(); } }

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2013-06-18 06:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How many continents have you visited?









    Results (595 votes), past polls