加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl中模块的概念(基础)

发布时间:2020-12-16 00:15:52 所属栏目:大数据 来源:网络整理
导读:? 模块 模块是一个.pm文件,可以在其他Perl文件(脚本或者模块)中引用。模块是一个文本文件,和perl脚本.pl的语法一模一样。模块的例子可以参考C:foobarbazDemoStringUtils.pm或者/foo/bar/baz/Demo/StringUtils.pm,代码如下: use?strict; ? use?war

?模块

模块是一个.pm文件,可以在其他Perl文件(脚本或者模块)中引用。模块是一个文本文件,和perl脚本.pl的语法一模一样。模块的例子可以参考C:foobarbazDemoStringUtils.pm或者/foo/bar/baz/Demo/StringUtils.pm,代码如下:

 
 
  1. use?strict; ?
  2. use?warnings; ?
  3. ?
  4. sub?zombify?{ ?
  5. ????my?$word?=?shift?@_; ?
  6. ????$word?=~?s/[aeiou]/r/g; ?
  7. ????return?$word; ?
  8. } ?
  9. ?
  10. return?1;?

因为当一个模块被载入时,模块是从头到尾的执行,你需要在末尾返回一个true值,表示这个模块已经载入成功。

为了让Perl解释器可以找到它们,在调用perl之前,包含perl模块的目录必须在环境变量PERL5LIB中列明。列出包含模块的根目录,而不要列出模块所在目录或者模块本身:

 
 
  1. set?PERL5LIB=C:foobarbaz;%PERL5LIB% ?

或者

 
 
  1. export?PERL5LIB=/foo/bar/baz:$PERL5LIB?

一旦Perl模块被创建,perl就会知道哪里才能找到它们,你可以在perl脚本中使用require函数搜索并执行它。例如,调用require Demo::StringUtils会触发Perl解释器在PERL5LIB的目录中逐一搜索,查找名为Demo/StringUtils.pm的文件。模块被执行完后,模块中定义的子程序现在对于主脚本来说就是可调用的了。我们的例子中可能叫做main.pl,并且代码如下:

 
 
  1. use?strict; ?
  2. use?warnings; ?
  3. ?
  4. require?Demo::StringUtils; ?
  5. ?
  6. print?zombify("i?want?brains");?#?"r?wrnt?brrrns"?

注意,使用双冒号隔开目录和模块。

现在出现一个问题:如果main.pl包含很多require语句,并且每个模块包含很多require,那么我们就很难去追踪原始的zombify定义到底是在哪里。解决方法就是使用包。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读