Perl Tutorials - Herong's Tutorial Examples - v6.03, by Herong Yang
"package" Statement - Switching Name Space
This section provides a tutorial example on how to switch name space with the 'package' statement and how to access identifiers from other name space with double colon '::'.
Name Space: A compilation unit used to isolate identifiers from different parts of the source code. Name space is also called package. There are several basic rules about name spaces:
To verify those rules, I wrote the following program, NameSpaceTest.pl,
#- NameSpaceTest.pl
#- Copyright (c) HerongYang.com. All Rights Reserved.
#
$j = "Java"; # starting with main
$f = "Fortran";
$p = "Perl";
$c = "C++";
@list = ($j, $f, $p, $c);
print("\nIn ",__PACKAGE__,"...\n");
print("list = ",join(', ',@list),"\n");
package Calendar; # entering Calendar
$j = "January";
$f = "February";
$m = "March";
$a = "April";
@list = ($j, $f, $m, $a);
print("\nIn ",__PACKAGE__,"...\n");
print("list = ",join(', ',@list),"\n");
{
package Fruit; # entering Fruit
$p = "peach";
$o = "orange";
$m = "mango";
$a = "apple";
@list = ($p, $o, $m, $a);
print("\nIn ",__PACKAGE__,"...\n");
print("list = ",join(', ',@list),"\n");
} # ending Fruit
# back to Calendar
print("\nBack in ",__PACKAGE__,"...\n");
print("list = ",join(', ',@list),"\n");
package Fruit; # entering Fruit
print("\nBack in ",__PACKAGE__,"...\n");
print("main::p = ",$main::p,"\n");
print("Fruit::p = ",$Fruit::p,"\n");
print("list = ",join(', ',@list),"\n");
print("main::list = ",join(', ',@main::list),"\n");
print("Calendar::list = ",join(', ',@Calendar::list),"\n");
exit;
The output matches my expectation:
In main... list = Java, Fortran, Perl, C++ In Calendar... list = January, February, March, April In Fruit... list = peach, orange, mango, apple Back in Calendar... list = January, February, March, April Back in Fruit... main::p = Perl Fruit::p = peach list = peach, orange, mango, apple main::list = Java, Fortran, Perl, C++ Calendar::list = January, February, March, April
Table of Contents
Data Types: Values and Variables
Expressions, Operations and Simple Statements
►Name Spaces and Perl Module Files
Including Script Codes from Other Files
do() Function - Including Script Files
require() Function - Including Script Files
►"package" Statement - Switching Name Space
BEGIN(), CHECK(), INIT() and END() Functions
CalendarModule.pm - A Sample Perl Module
Hard References - Addresses of Memory Objects
Objects (or References) and Classes (or Packages)
Typeglob and Importing Identifiers from Other Packages
String Built-in Functions and Performance
File Handles and Data Input/Output
Open Directories and Read File Names
File System Functions and Operations
Socket Communication Over the Internet
XML::Simple Module - XML Parser and Generator
SOAP::Lite - SOAP Server-Client Communication Module
Perl Programs as IIS Server CGI Scripts
CGI (Common Gateway Interface)
XML-RPC - Remote Procedure Call with XML and HTTP
RPC::XML - Perl Implementation of XML-RPC
Integrating Perl with Apache Web Server
CGI.pm Module for Building Web Pages
LWP::UserAgent and Web Site Testing
Converting Perl Script to Executable Binary