查看原文
其他

Perl学习10之perl模块详解(一)

pythonic生物人 pythonic生物人 2022-09-11

"pythonic生物人"的第16篇分享



摘要

Perl中模块的基础知识手动编译安装perl模块

目录

1、模块基础知识
  • 查看某模块是否安装

  • 列出所有模块

  • Perl脚本中导入模块

  • Perl脚本中导入模块指定的函数

  • 将路径下模块添加到Perl环境变量

  • 执行程序时显式指定模块查找路径

  • 查看Perl模块安装目录


2、手动编译安装Perl模块

  • https://metacpan.org下载

  • linux终端安装

  • 检查模块是否安装成功

  • 模块路径添加到PERL5LIB环境变量中

  • 方法一

  • 方法二



正文开始啦



1、模块基础知识

  • 查看某模块是否安装

/usr/bin/perldoc Llamas
 #模块不存在报错
No documentation found for "Llamas".
/usr/bin/perldoc CGI
#模块存在输出说明文档(一下显示部分内容)
NAMECGI - Handle Common Gateway Interface requests and responsesSYNOPSIS
  • 列出所有模块

cpan -a

re 0.19_01 0.37 SHAY/perl-5.30.2.tar.gz

sigtrap 1.06 1.09 SHAY/perl-5.30.2.tar.gz

sort 2.01 2.04 SHAY/perl-5.30.2.tar.gz

strict 1.07 1.11 SHAY/perl-5.30.2.tar.gz

strictures::extra undef undef HAARG/strictures-2.000006.tar.gz

。。。。。。。。。。。。。。。。。。。。。。。

每行输出内容为四列,每列意思分别如下:
模块名/版本号/最新版本号/CPAN中的位
  • Perl脚本中导入模块

!/usr/bin/perluse strict;use warnings;use File::Basename;#导入模块File::Basename

  • Perl脚本中导入模块指定的函数

!/usr/bin/perluse strict;use warnings;以下两种方法等价use File::Basename qw(basename dirname);use File::Basename ('basename','dirname');
  • 将路径下模块添加到Perl环境变量

手动安装的包,安装到了一个非默认的查找路径下,这时可以通过设置.bashrc 中PERL5LIB环境变量,perl会从这个环境变量中去查找模块,例如

export PERL5LIB=/home/perl_packge/lib/perl5:$PERL5LIB
  • 执行程序时显式指定模块查找路径
perl -I/home/perl_packge/lib/perl5 test.pl#I与路径之间不能有空格
  • 查看Perl模块安装目录

Perl中Perl模块路径存储在变量@INC中。

输出@INC中默认存储的Perl模块路径:

perl -e '{print "$_\n" foreach @INC}'
2、手动编译安装Perl模块

以Parallel::ForkManager模块为例

https://metacpan.org下载

  • linux终端安装

wget https://cpan.metacpan.org/authors/id/Y/YA/YANICK/Parallel-ForkManager-2.02.tar.gz .tar -zxvf Parallel-ForkManager-2.02.tar.gzcd Parallel-ForkManager-2.02ll


上图显示为Makefile.PL,使用make编译;有的软件为Build.PL,使用build编译。

 perl Makefile.PL INSTALL_BASE= /home/perl_packge
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Parallel::ForkManager
Writing MYMETA.yml and MYMETA.json
make

cp lib/Parallel/ForkManager.pm blib/lib/Parallel/ForkManager.pm

cp lib/Parallel/ForkManager/Child.pm blib/lib/Parallel/ForkManager/Child.pm

Manifying 2 pod documents

make install

Manifying 2 pod documents

Installing /home/perl_packge/lib/perl5/Parallel/ForkManager.pm

Installing /home/perl_packge/lib/perl5/Parallel/ForkManager/Child.pm

Installing /home/perl_packge/man/man3/Parallel::ForkManager.3pm

Installing /home/perl_packge/man/man3/Parallel::ForkManager::Child.3pm

#红色部分为模块安装路径

  • 检查模块是否安装成功

/usr/bin/perldoc Parallel::ForkManager

No documentation found for "Parallel::ForkManager".

原因是没有将模块安装的路径添加到PERL5LIB环境变量中。有两种解决办法如下:

  • 模块路径添加到PERL5LIB环境变量中

  • 方法一

vi ~/.bashrc

输入上面模块安装指定的路径输入,如下内容:

export PERL5LIB=/home/perl_packge/lib/perl5:$PERL5LIB

保存

source ~/.bashrc
 再次检测模块是否安装成功
/usr/bin/perldoc Parallel::ForkManager
显示帮助文档安装成功 
NAME
    Parallel::ForkManager - A simple parallel processing fork manager
VERSION
    version 2.02
SYNOPSIS
      use Parallel::ForkManager;
      my $pm = Parallel::ForkManager->new($MAX_PROCESSES);
      DATA_LOOP:
      foreach my $data (@all_data) {
        # Forks and returns the pid for the child:
        my $pid = $pm->start and next DATA_LOOP;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • 方法二

在perl脚本中指定模块安装路径
#!/usr/bin/perluse strict;use warnings;use lib qw(/home/perl_packge/lib/perl5/);#指定模块安装路径use Parallel::ForkManager;



同系列文章

Perl学习01之标量数据
Perl学习02数组和哈希使用
Perl学习03之流程控制结构
Perl学习04之IO及文件读写
Perl学习05之正则表达式
Perl学习06之一行式操作
Perl学习07之自增(++)自减(--)
Perl学习08之子程序
Perl学习09之文件目录操作


持续更新,欢迎您"关注"、"在看"、"分享"


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存