Perl中的package语句将当前命名上下文切换到指定的命名空间(符号表)。因此-
包是驻留在其自己的命名空间中的代码的集合。
命名空间是唯一变量名称的命名集合(也称为符号表)。
命名空间可防止程序包之间的变量名冲突。
包使模块的构造成为可能,这些模块在使用时不会破坏模块自身命名空间之外的变量和功能。
该包将一直有效,直到调用另一个package语句,或者直到当前块或文件的末尾为止。
您可以使用::包限定符显式引用包中的变量。
以下是在文件中包含main和Foo包的示例。在这里,特殊变量__PACKAGE__已用于打印软件包名称。
#!/usr/bin/perl # This is main package $i = 1; print "Package name : " , __PACKAGE__ , " $i\n"; package Foo; # This is Foo package $i = 10; print "Package name : " , __PACKAGE__ , " $i\n"; package main; # This is again main package $i = 100; print "Package name : " , __PACKAGE__ , " $i\n"; print "Package name : " , __PACKAGE__ , " $Foo::i\n"; 1;
输出结果
执行以上代码后,将产生以下结果-
Package name : main 1 Package name : Foo 10 Package name : main 100 Package name : main 10