在Perl中使用XPath

时间:2012-06-25 16:05:41

标签: perl xpath

我正在尝试使用Perl复制我的C# / XPath代码在Linux上的功能。我复制并粘贴了Perl & XML中的例8-6中的代码。如果我理解正确,我应该能够运行该Perl代码,将此代码放在终端

xmlPerl.pl mydatafile.xml "/inventory/category/item/name"

但是当我尝试运行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.

我做错了什么?我认为它与我的代码开头的XML和XPath名称有关。我是否需要安装一些东西才能使用XPath框架?我在RedHat 5.5上运行。

3 个答案:

答案 0 :(得分:9)

来自perldiag

  

找不到%s

     

您说要执行(或要求或使用)无法找到的文件。 Perl在@INC中提到的所有位置查找文件,除非文件名包含文件的完整路径。也许您需要设置PERL5LIBPERL5OPT环境变量来说明额外库的位置,或者脚本需要将库名称添加到@INC。或许你只是错误拼写了文件的名称。请参阅requireperlfunc中的lib

您没有安装XML::XPath模块,或者Perl找不到它。使用CPAN安装模块:

> cpan XML::XPath

或使用包管理器:

> apt-get install libxml-xpath-perl

或者如果它已经安装,说明PERL5LIB环境变量的位置:

> PERL5LIB=/path/to/lib perl ...

@INC变量:

BEGIN {
    unshift(@INC, '/path/to/lib');
}

lib pragma:

use lib '/path/to/lib';

答案 1 :(得分:3)

这是尝试use未安装的模块时出现的标准错误。你应该安装它。

理想情况下使用OS包;例如,在debian派生的操作系统(如Debian或Ubuntu)上

$ apt-get install libxml-xpath-perl

如果失败,您可以像往常一样使用CPAN

进行安装
$ cpan XML::XPath

答案 2 :(得分:0)

答案出现在错误的第一部分:

Can't locate XML/XPath.pm

在Perl中,最大的好处是使用其他人为您编写的模块或库,您可以重复使用。在这种情况下,有人写了一个名为XML :: XPath的模块(在Perl中,路径由'::'描述),你只需要安装它。安装它的最简单方法是通过cpan,这是一个安装了大多数Perl安装的工具。跑吧:

cpan
(you'll be dropped into a different command prompt)
install XML::XPath

这将获取XML :: XPath,解压缩,生成Makefile,检查依赖项(并安装任何缺失的),制作,测试并为您安装。有关使用CPAN的详细信息,请查看here