Perl 模块和包
模块和包彼此密切相关并且是独立的。
- 包:Perl 包也称为命名空间,它具有程序中使用的所有唯一变量,如哈希数组、数组、标量和子程序。
- 模块:模块是可重用代码的集合,我们在其中编写子程序。可以在 Perl 程序中加载这些模块,来用这些模块中编写的子程序。
什么是 Perl 模块?
在任何系统上安装 Perl 时都会安装标准模块。
CPAN:全面的 Perl 存档网络 - Perl 模块的全局存储库。我们自己定制的 Perl 模块可以由我们编写。基本上,在任何脚本中加载的模块将导出其所有全局变量和子程序。这些子程序可以直接调用,就好像它们是在脚本本身中声明的一样。Perl 模块可以使用 .pm
扩展名编写,文件名比如说时 Foo.pm
。可以使用程序开头的 package Foo
编写模块。
Basic Perl 模块:
#!/usr/bin/perl
package Arithmetic;
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
要使用此 Perl 模块,我们必须将其放在当前工作目录中。
我们可以使用 require
或 use
在代码中的任何位置来加载 Perl 模块。require
和 use
之间的主要区别是,require
在运行时加载,而 use
是在编译期间加载的。
#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);
我们也可以使用 use Arithmetic
访问包。
Exporter
此模块具有导入方法的默认功能。
#!/usr/bin/perl
package Arithmetic;
require Exporter;
@ISA= qw(Exporter); # This is basically for implementing inheritance.
@EXPORT = qw(add);
@EXPORT_OK = qw(subtract);
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
@EXPORT
数组可用于传递变量和子程序列表,默认情况下将导出到模块的调用者。
@EXPORT_OK
数组可用于传递将按需导出的变量和子程序列表,用户必须在加载模块时指定。
#!/usr/bin/perl
use
Arithmetic qw(subtract);
print add(5,6);
print subtract (5,6);
默认情况下,add
子程序将被导出。如果在加载模块时未指定减法方法,则不会导出减法方法。