繁体   English   中英

如何检查系统中是否安装了 Perl 模块

[英]How to check if the Perl Module is been installed in system or not

我在以下位置安装了 Perl 模块( Net::Telnet ): /home/vinod/VK_Scripts/Practices/lib

我正在执行下面的命令来检查模块是否存在于系统中或不使用下面的命令 -

perl -MNet::Telnet -e 'print "Installed\n"'
vinod@vinod-VirtualBox:~/VK_Scripts/Practices$ perl -MNet::Telnet -e 'print "Installed\n"'
Can't locate Net/Telnet.pm in @INC (you may need to install the Net::Telnet module) (@INC contains: /home/vinod/perl5/lib/perl5/5.30.0/x86_64-linux-gnu-thread-multi /home/vinod/perl5/lib/perl5/5.30.0 /home/vinod/perl5/lib/perl5/x86_64-linux-gnu-thread-multi /home/vinod/perl5/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base).
BEGIN failed--compilation aborted.

因此,我已按照@ikegami 在线程中的建议将 lib 路径添加到 PERL5LIB。

命令是——

export PERL5LIB=/home/vinod/perl5/lib/perl5:/home/vinod/VK_Scripts/Practices/lib

现在,当我使用相同的命令检查系统中是否存在模块时,使用以下命令返回true。

vinod@vinod-VirtualBox:~/VK_Scripts/Practices$ perl -MNet::Telnet -e 'print "Installed\n"'
Installed

所以,这里的问题是有没有可能我可以检查模块是否存在于perl -MNet::Telnet -e 'print "Installed\\n"'命令本身的可能位置,而PERL5LIB之前export它们exportPERL5LIB

您可以通过-I参数在命令行本身上为 Perl 解释器指定包含路径(一个或多个):

perl -I /home/vinod/VK_Scripts/Practices/lib -MNet::Telnet -e ''

您还可以检查脚本的退出代码。 如果已安装,它将为零,否则您得到的不是零。

可以使用以下命令确认 perl 模块的安装

cpan -D {module}

此命令的输出类似于cpan -D Net::Telnet

C:\...\Examples>cpan -D Net::Telnet
Loading internal logger. Log::Log4perl recommended for better logging
CPAN: CPAN::SQLite loaded ok (v0.217)
CPAN: LWP::UserAgent loaded ok (v6.43)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
CPAN: YAML::XS loaded ok (v0.81)
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
Database was generated on Sat, 22 Aug 2020 09:40:39 GMT
Updating database file ... Done!
Net::Telnet
-------------------------------------------------------------------------
        CPAN: Module::CoreList loaded ok (v5.20200314)
(no description)
        J/JR/JROGERS/Net-Telnet-3.04.tar.gz
        C:\bin\Portable\strawberry-perl\perl\vendor\lib\Net\Telnet.pm
        Installed: 3.04
        CPAN:      3.04  up to date
        Jay Rogers (JROGERS)
        jay@rgrs.com

注意:如果模块安装在非默认位置,例如在不受您控制的 Web 服务器上(进入您的主目录),您必须定义变量PERL5LIB以指向安装位置,以包含在@INC或 perl 脚本中(s) 利用use lib .... .

注意:perl 命令选项-I允许指定要查看的包含目录。 如果您不介意输入长路径,那么您可以使用它,尽管将此路径包含在@INC是更可取的方法。 在最后一种情况下,您可以使脚本可执行,只需键入script.pl [options] file(s)

文档: perlrun

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM