Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^2: HTML::LinkExtor weirdness (scoping closures nested named subs)

by skazat (Chaplain)
on Nov 06, 2013 at 22:33 UTC ( [id://1061492]=note: print w/replies, xml ) Need Help??


in reply to Re: HTML::LinkExtor weirdness (scoping closures nested named subs)
in thread HTML::LinkExtor weirdness

Indeed, that change doe make things work! Is there somewhere I an further read to understand where I went wrong?

Infinitely grateful for your help - that darn thing was giving me public fits ;)

-skazat
  • Comment on Re^2: HTML::LinkExtor weirdness (scoping closures nested named subs)

Replies are listed 'Best First'.
Re^3: HTML::LinkExtor weirdness (scoping closures nested named subs)
by ig (Vicar) on Nov 06, 2013 at 23:41 UTC

    The error message Variable "%s" will not stay shared is described in perldiag. The description is brief but explains the behavior you experienced. You can also read about closure in perlref, perlsub and elsewhere.

Re^3: HTML::LinkExtor weirdness (scoping closures nested named subs)
by Anonymous Monk on Nov 07, 2013 at 00:27 UTC

    This is why you don't nest named subs, the closure becomes "static"

    perl -E " sub f{ my %g; sub g{say \%g; } g(); say \%g; \%g } say f(),$/ for 1 .. 4;"

    perl -E ' sub f{ my %g; sub g{say \%g; } g(); say \%g; \%g } say f(),$/ for 1 .. 4; '

    HASH(0xabd9c4) HASH(0xabd9c4) HASH(0xabd9c4) HASH(0xabd9c4) HASH(0x3f9b6c) HASH(0x3f9b6c) HASH(0xabd9c4) HASH(0x3f9b8c) HASH(0x3f9b8c) HASH(0xabd9c4) HASH(0x3f9b6c) HASH(0x3f9b6c)

    By making the nested subroutine a variable (also known as an anonymous sub), the closure is dynamic

    $ perl -lE " sub f{ my %g; my $g = sub {say \%g; $g{1}++}; $g->(); say \%g; \%g } say f(),$/ for 1 .. 4;"

    HASH(0xabd9d4) HASH(0xabd9d4) HASH(0xabd9d4) HASH(0x3f9b1c) HASH(0x3f9b1c) HASH(0x3f9b1c) HASH(0x99b374) HASH(0x99b374) HASH(0x99b374) HASH(0x99b344) HASH(0x99b344) HASH(0x99b344)
Re^3: HTML::LinkExtor weirdness (scoping closures nested named subs)
by Anonymous Monk on Nov 06, 2013 at 23:34 UTC
    I linked it already, just follow the linked links :)

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (3)
As of 2024-04-20 07:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found