Perl中的软件包是什么?

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