2.9 Packages and Lexicals


A lexical variable (a variable introduced with my ) isn't prefixed by the current package because package variables are always global : you can always reference a package variable if you know its full name. A lexical variable is usually temporary and accessible for only a portion of the program. If a lexical variable is declared, then using that name without a package prefix results in accessing the lexical variable. However, a package prefix ensures that you are accessing a package variable and never a lexical variable.

For example, suppose a subroutine within navigation.pl declares a lexical @homeport variable. Any mention of @homeport will then be the newly introduced lexical variable, but a fully qualified mention of @Navigation::homeport accesses the package variable instead.

 package Navigation; @homeport = (21.1, -157.525); sub get_me_home {   my @homeport;   .. @homeport .. # refers to the lexical variable   .. @Navigation::homeport .. # refers to the package variable } .. @homeport .. # refers to the package variable 

Obviously, this can lead to confusing code, so you shouldn't introduce such a duplication needlessly. The results are completely predictable, though.



Learning Perl Objects, References & Modules
Learning Perl Objects, References, and Modules
ISBN: 0596004788
EAN: 2147483647
Year: 2003
Pages: 199

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net