in reply to Re^3: how to declare a package variable
in thread how to declare a package variable

I don't believe this to be entirely correct since the second variant doesn't create a lexical.
  • Comment on Re^4: how to declare a package variable

Replies are listed 'Best First'.
Re^5: how to declare a package variable
by BrowserUk (Patriarch) on Apr 15, 2016 at 11:09 UTC
    the second variant doesn't create a lexical.

    Neither does the first!

    our only gives lexical visibility; not a true lexical variable.

    Ie. With my, it creates an entirely new variable at each level of scope:

    my $a = 123; { my $a; print $a; ## produces "Use of uninitialized value $a in print ... +" because the above new $a is entirely new; thus uninitialised. } print $a;; ## prints: 123

    However, our only gives lexically scoped access to a single variable:

    our $a = 123; { our $a; ## produces ""our" variable $a redeclared at ..." referenc +es the same variable as the first our $a print $a; ## prints 123 ## New scope, same variable, existing valu +e. } print $a;; ## prints 123

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
    In the absence of evidence, opinion is indistinguishable from prejudice.