Perl包和模块的示例分析

发布时间:2022-02-24 11:49:04 作者:小新
来源:亿速云 阅读:156

这篇文章主要介绍Perl包和模块的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Perl 包和模块

Perl 包和模块

Perl 中每个包有一个单独的符号表,定义语法为:

package mypack;

此语句定义一个名为 mypack 的包,在此后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个 package 语句为止。

每个符号表有其自己的一组变量、子程序名,各组名字是不相关的,因此可以在不同的包中使用相同的变量名,而代表的是不同的变量。

从一个包中访问另外一个包的变量,可通过" 包名 + 双冒号( :: ) + 变量名 " 的方式指定。

存贮变量和子程序的名字的默认符号表是与名为 main的包相关联的。如果在程序里定义了其它的包,当你想切换回去使用默认的符号表,可以重新指定main包:

package main;

这样,接下来的程序就好象从没定义过包一样,变量和子程序的名字象通常那样存贮。

以下实例中文件有 main 和 Foo 包。 特殊变量 __PACKAGE__ 用于输出包名:

实例

#!/usr/bin/perl#  main 包$i = 1; 
print"包名 : " , __PACKAGE__ , "$i\n"; 
 
package Foo;#  Foo 包$i = 10; 
print"包名 : " , __PACKAGE__ , "$i\n"; 
 
package main;# 重新指定 main 包$i = 100; 
print"包名 : " , __PACKAGE__ , "$i\n"; 
print"包名: " , __PACKAGE__ ,  "$Foo::i\n"; 
 
1;

执行以上程序,输出结果为:

包名: main 1包名:Foo10包名: main 100包名: main 10

BEGIN 和 END 模块

Perl语言提供了两个关键字:BEGIN,END。它们可以分别包含一组脚本,用于程序体运行前或者运行后的执行。

语法格式如下:

BEGIN{...}END{...}BEGIN{...}END{...}

如果你还不大理解,我们可以看个实例:

实例

#!/usr/bin/per
lpackage Foo;print"Begin 和 Block 实例\n"; 
BEGIN{    print"这是 BEGIN 语句块\n";}END{    print"这是 END 语句块\n";}1;

执行以上程序,输出结果为:

这是BEGIN语句块Begin和Block实例这是END语句块

什么是 Perl 模块?

Perl5 中用Perl包来创建模块。

Perl 模块是一个可重复使用的包,模块的名字与包名相同,定义的文件后缀为 .pm

以下我们定义了一个模块 Foo.pm,代码如下所示:

实例

#!/usr/bin/perlpackage Foo;sub bar{    print"Hello $_[0]\n"}sub blat{    print"World $_[0]\n";}1;

Perl 中关于模块需要注意以下几点:

Require 和 Use 函数

模块可以通过 require 函数来调用,如下所示:

实例

#!/usr/bin/perlrequire Foo; 
Foo::bar("a");Foo::blat("b");

也可以通过 use 函数来引用:

实例

#!/usr/bin/perluse Foo; 
bar("a");blat("b");

我们注意到 require 引用需要使用包名指定函数,而 use 不需要,二者的主要区别在于:

通过添加以下语句 use 模块就可以从模块中导出列表符号:

require Exporter;@ISA= qw(Exporter);

@EXPORT数组包含默认导出的变量和函数的名字:

package Module;requireExporter;@ISA= qw(Exporter);@EXPORT= qw(bar blat);# 默认导出的符号sub bar {    print"Hello $_[0]\n";}sub blat {    print"World $_[0]\n";}sub splat {    print"Not $_[0]\n"}# Not exported!1;

创建 Perl 模块

通过 Perl 分发自带的工具 h3xs 可以很简单的创建一个 Perl 模块。

你可以在命令行模式键入 h3xs 来看看它的参数列表。

h3xs 语法格式:

$ h3xs -AX -n  ModuleName

参数说明:

例如,如果你的模块在 Person.pm 文件中,使用以下命令:

$ h3xs -AX -n Person

执行以上程序将输出:

Writing Person/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWritingPerson/MANIFEST

Person 目录下你可以看到新增加的目录及文件说明:

你可以使用 tar (Linux 上) 命令来将以上目录打包为 Person.tar.gz。

安装 Perl 模块

我们可以对刚才压缩的 Person.tar.gz 文件进行解压安装,执行步骤如下:

tar xvfz Person.tar.gz
cd Personperl Makefile.PL
make
make install

首先运行 "perl Makefile.PL" 在当前目录生成 Makefile;

然后运行 "make" 编译并创建所需的库文件;

之后用 "make test" 测试编译结果是否正确;最后运行 "make install" 将库文件安装到系统目录,至此整个编译过程结束。

以上是“Perl包和模块的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. python包和logging日志的示例分析
  2. Perl如何使用模块

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

perl

上一篇:perl如何判断数组中是否含有某个元素

下一篇:安装R包ggpubr报错怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》