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 模块,我们必须将其放在当前工作目录中。

我们可以使用 requireuse 在代码中的任何位置来加载 Perl 模块。requireuse 之间的主要区别是,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 子程序将被导出。如果在加载模块时未指定减法方法,则不会导出减法方法。