Perl 中的包是什么?
在 Perl 中,package 语句将当前命名上下文切换到指定的命名空间(符号表)。因此,
- 包是一组代码,存在于其自身的命名空间中。
- 命名空间是有序集合的唯一变量名称(又称为符号表)。
- 命名空间可以防止不同包之间的变量名冲突。
- 包支持模块的构建,在使用模块时,不会破坏模块自身命名空间之外的变量和函数。
- 包持续有效,直到调用另一个包语句,或者直到当前块或文件的末尾。
- 可以使用 :: 包限定符显式引用包中的变量。
下面是一个文件中包含主包和 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
广告