如何查看系统是否安装了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
我已将 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 在
命令是-
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