Perl程序包是驻留在其自己的名称空间中的代码的集合。 Perl模块是在文件中定义的软件包, 其名称与该软件包的名称相同, 并且具有扩展名
。两个不同的模块可能包含相同名称的变量或函数。任何不包含在任何程序包中的变量都属于主程序包。因此, 所有使用的变量都属于" main"包。通过声明其他程序包, 可以保证不同程序包中的变量不会相互干扰。
声明一个Perl模块
模块名称必须与软件包名称相同, 并且扩展名为.pm。
示例:Calculator.pm
package Calculator;
# Defining sub-routine for Addition
sub addition
{
# Initializing Variables a & b
$a = $_ [0];
$b = $_ [1];
# Performing the operation
$a = $a + $b ;
# Function to print the Sum
print "\n***Addition is $a" ;
}
# Defining sub-routine for Subtraction
sub subtraction
{
# Initializing Variables a & b
$a = $_ [0];
$b = $_ [1];
# Performing the operation
$a = $a - $b ;
# Function to print the difference
print "\n***Subtraction is $a" ;
}
1;
在这里, 文件名是存储在目录Calculator中的" Calculator.pm"。注意1;在代码末尾编写, 以将真值返回给解释器。 Perl接受任何真值, 而不是1。
使用Perl模块
要使用此计算器模块, 我们使用需求或使用功能。要从模块访问函数或变量, 请使用::。这是一个演示相同内容的示例:
示例:Test.pl
#!/usr/bin/perl
# Using the Package 'Calculator'
use Calculator;
print "Enter two numbers to add" ;
# Defining values to the variables
$a = 10;
$b = 20;
# Subroutine call
Calculator::addition( $a , $b );
print "\nEnter two numbers to subtract" ;
# Defining values to the variables
$a = 30;
$b = 10;
# Subroutine call
Calculator::subtraction( $a , $b );
输出如下:
从其他目录访问软件包
如果访问包的文件位于目录之外, 则我们使用" ::"来指示模块的路径。例如, 使用计算器模块的文件位于计算器包的外部, 因此我们编写了计算器::计算器以加载该模块, 其中'::'左侧的值表示软件包名称, 而'::'右侧的值表示Perl模块。名称。让我们看一个例子来理解这一点:
示例:计算器目录外的Test_out_package.pl
#!/usr/bin/perl
use GFG::Calculator; # Directory_name::module_name
print "Enter two numbers to add" ;
# Defining values to the variables
$a = 10;
$b = 20;
# Subroutine call
Calculator::addition( $a , $b );
print "\nEnter two numbers to subtract" ;
# Defining values to the variables
$a = 30;
$b = 10;
# Subroutine call
Calculator::subtraction( $a , $b );
输出如下:
使用模块中的变量
可以通过在使用之前声明它们来使用来自不同程序包的变量。以下示例说明了这一点
示例:Message.pm
#!/usr/bin/perl
package Message;
# Variable Creation
$username ;
# Defining subroutine
sub Hello
{
print "Hello $username\n" ;
}
1;
Perl文件访问模块如下
示例:variable.pl
#!/usr/bin/perl
# Using Message.pm package
use Message;
# Defining value to variable
$Message::username = "ABC" ;
# Subroutine call
Message::Hello();
输出如下:
开始和结束块
当我们想在代码的开始部分运行而在代码的结束部分运行时, 使用BEGIN和END块。在脚本的开头执行在BEGIN {…}中编写的代码, 而在脚本的结尾执行在END {…}中编写的代码。下面的程序演示了这一点:
示例:begineg.pl
#!/usr/bin/perl
# Predefined BEGIN block
BEGIN
{
print "In the begin block\n" ;
}
# Predefined END block
END
{
print "In the end block\n" ;
}
print "Hello Perl;\n" ;
输出如下:
In the begin block
Hello Perl;
In the end block