in reply to Re: how to declare a local *subname=sub{}?
in thread how to declare a local *subname=sub{}?
I am very unsure as to your question and the intent of your code?
I share your uncertainty. I think perl-diddler may have invented yet another way to write spaghetti code without using goto. A dispatch table approach such as you exemplify tends to be my knee-jerk approach to the sort of problem that I imagiine gave rise to the OP.
# local can only "mask" an "our" or a global variable ... ... # A "my" variable cannot be "localized"
I tend to think of this a bit differently. My conception is that a my variable can be completely "localized" or isolated within a scope, whereas an our (or package global) variable cannot. The potential scoped isolation of lexical variables makes it very easy to reason about them, a great advantage.
c:\@Work\Perl>perl -wMstrict -le "our $xyzzy = 33; print qq{A: $xyzzy}; { local $xyzzy = 55; print qq{B: $xyzzy}; zot(); print qq{C: $xyzzy}; } print qq{D: $xyzzy}; ;; sub zot { $xyzzy = 99; } " A: 33 B: 55 C: 99 D: 33 c:\@Work\Perl>perl -wMstrict -le "my $xyzzy = 33; print qq{A: $xyzzy}; { my $xyzzy = 55; print qq{B: $xyzzy}; zot(); print qq{C: $xyzzy}; zonk(); print qq{D: $xyzzy}; } print qq{E: $xyzzy}; ;; sub zot { $xyzzy = 99; } ;; sub zonk { my $xyzzy = 9999; } " A: 33 B: 55 C: 55 D: 55 E: 99
Update: But then there's PadWalker... (sigh)
Give a man a fish: <%-{-{-{-<
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: how to declare a local *subname=sub{}?
by Marshall (Canon) on Oct 31, 2016 at 06:27 UTC |