首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中使用XPath

在Perl中使用XPath
EN

Stack Overflow用户
提问于 2012-06-26 00:05:41
回答 3查看 13.9K关注 0票数 3

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

代码语言:javascript
复制
xmlPerl.pl mydatafile.xml "/inventory/category/item/name"

但是,当我尝试运行Perl文件时,它不起作用。下面是错误:

代码语言:javascript
复制
[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上运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-26 00:24:49

来自perldiag

找不到%s

你说要做(或要求,或使用)一个找不到的文件。除非文件名包含文件的完整路径,否则Perl将在@INC中提到的所有位置查找该文件。您可能需要设置PERL5LIBPERL5OPT环境变量来说明额外的库在哪里,或者脚本可能需要将库名称添加到@INC中。也许你只是拼错了文件名。请参阅perlfunclib中的require

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

代码语言:javascript
复制
> cpan XML::XPath

或者使用包管理器:

代码语言:javascript
复制
> apt-get install libxml-xpath-perl

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

代码语言:javascript
复制
> PERL5LIB=/path/to/lib perl ...

@INC变量:

代码语言:javascript
复制
BEGIN {
    unshift(@INC, '/path/to/lib');
}

lib杂注:

代码语言:javascript
复制
use lib '/path/to/lib';
票数 9
EN

Stack Overflow用户

发布于 2012-06-26 00:15:12

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

理想情况下,对它使用OS包;例如,在Debian派生的OS (如Debian或Ubuntu)上)

代码语言:javascript
复制
$ apt-get install libxml-xpath-perl

如果做不到,您可以像往常一样使用CPAN安装它

代码语言:javascript
复制
$ cpan XML::XPath
票数 3
EN

Stack Overflow用户

发布于 2012-06-26 00:14:26

答案就在你错误的第一部分:

代码语言:javascript
复制
Can't locate XML/XPath.pm

在Perl中,最大的好处是使用别人为您编写的模块或库,您可以重用这些模块或库。在本例中,有人编写了一个名为XML::XPath的模块(在Perl中,路径由‘::’分隔),您只需安装它。安装它的最简单方法是通过cpan,这是一个随大多数Perl安装一起安装的工具。只需运行:

代码语言:javascript
复制
cpan
(you'll be dropped into a different command prompt)
install XML::XPath

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11192967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档