ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
3.2.106 packagepackage This is not really a function, but a declaration that says that the rest of the innermost enclosing block, subroutine, eval or file belongs to the indicated namespace. (The scope of a package declaration is thus the same as the scope of a local or my declaration.) All subsequent references to unqualified global identifiers will be resolved by looking them up in the declared package's symbol table. A package declaration affects only global variables - including those you've used local on - but not lexical variables created with my. Typically you would put a package declaration as the first thing in a file that is to be included by the require or use operator, but you can put one anywhere that a statement would be legal. When defining a class or a module file, it is customary to name the package the same name as the file, to avoid confusion. (It's also customary to name such packages beginning with a capital letter, because lowercase modules are by convention interpreted as pragmas.) You can switch into a given package in more than one place; it merely influences
which symbol table is used by the compiler for the rest of that block. (If it
sees another package declaration at the same
level, the new one overrides the previous one.) Your main program is assumed to
start with a You can refer to variables and filehandles in other packages by qualifying the
identifier with the package name and a double colon:
The symbol table for a package is stored in a hash with a name ending in a
double colon. The main package's symbol table is named
See "Packages" in Chapter 5, for more information about packages, modules, and classes. See my in Chapter 3, Functions, for other scoping issues. |