in reply to Re^2: Help! My variables are jumping off a cliff!
in thread Help! My variables are jumping off a cliff!
Declaring a variable twice in the same scope is indeed an error...
my does two things. During compilation, it creates an association between a variable name and its appropriate lexical scope. During runtime, it initializes the appropriate storage for that variable.
The strict pragma only cares about the former; the documentation has long stated:
This generates a compile-time error if you access a variable that wasn't declared via "our" or "use vars", localized via "my()", or wasn't fully qualified.
While you may be right that strict should warn about double declaration, strict 'vars' only concerns itself with an idempotent operation. You can't create that compile-time association more than once in the same scope because that association is an either-or concern.
With that said, you can't unilaterally assume that all instances of the double-declaration have unintended runtime consequences. Those consequences are also well established and long understood. I can imagine code which does this deliberately.
That's not my particular style, but not everything I find confusing is (nor should it be) an error.
Improve your skills with Modern Perl: the free book.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Help! My variables are jumping off a cliff!
by oko1 (Deacon) on Feb 26, 2012 at 15:28 UTC | |
by chromatic (Archbishop) on Feb 26, 2012 at 22:13 UTC | |
by oko1 (Deacon) on Feb 27, 2012 at 01:03 UTC | |
by chromatic (Archbishop) on Feb 27, 2012 at 04:32 UTC | |
by BrowserUk (Patriarch) on Feb 27, 2012 at 04:54 UTC |