我试图使用Perl 复制我的C#/ XPath代码在Linux上的作用.我复制并粘贴了Perl和XML中的例8-6中的代码.如果我理解正确,我应该能够运行该Perl代码,将此代码放在终端中
xmlPerl.pl mydatafile.xml "/inventory/category/item/name"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行Perl文件时,它不起作用.这是错误:
[root@Perl ~]# perl xmlPerl.pl
Can't locate XML/XPath.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at xmlPerl.pl line 3.
BEGIN failed--compilation aborted at xmlPerl.pl line 3.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我认为它与我的代码开头的XML和XPath名称有关.我是否需要安装一些东西才能使用XPath框架?我在RedHat 5.5上运行.
来自perldiag:
找不到%s
你说要做(或要求或使用)无法找到的文件.Perl在所有提到的位置查找文件
@INC,除非文件名包含文件的完整路径.也许您需要设置PERL5LIB或PERL5OPT环境变量来说明额外库的位置,或者脚本需要添加库名称@INC.或许你只是错误拼写了文件的名称.见require的perlfunc和lib.
你没有安装XML::XPath模块,或Perl没有找到它.使用CPAN安装模块:
> cpan XML::XPath
Run Code Online (Sandbox Code Playgroud)
或包裹经理:
> apt-get install libxml-xpath-perl
Run Code Online (Sandbox Code Playgroud)
或者,如果它已经安装,说明它与PERL5LIB环境变量的位置:
> PERL5LIB=/path/to/lib perl ...
Run Code Online (Sandbox Code Playgroud)
@INC 变量:
BEGIN {
unshift(@INC, '/path/to/lib');
}
Run Code Online (Sandbox Code Playgroud)
或者libpragma:
use lib '/path/to/lib';
Run Code Online (Sandbox Code Playgroud)