in reply to Re^2: sub scope question
in thread sub scope question
You say you get a new instance of $list_ref every time the function is called because my is not merely a declaration like in C. Yet you would get a new instance of local variables every time a function is called in C as well! Consider a re-entrant function, for example.
In fact, as an optimization in Perl, you *don't* get a new instance of my variable every pass unless you do something that forces Perl to create a new variable. That's an implementation detail you shouldn't worry about, though.
As for your suggestion to move my $list_ref, it seems to miss the point that nesting *named* functions has no benefit in Perl. Instead of trying to make the nested named function work, one should look at what one wants to achieve by nesting a named function and look for ways to meet that goal. (local *name = sub { ... }; is the likely answer.)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: sub scope question
by papidave (Pilgrim) on Feb 07, 2008 at 17:36 UTC | |
by ikegami (Patriarch) on Feb 07, 2008 at 18:40 UTC |