如何查看系统是否安装了Perl Module

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

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

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

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

您可以通过 -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

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

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

文档:perlrun