【问题标题】:Using XPath with Perl将 XPath 与 Perl 一起使用
【发布时间】:2012-06-26 01:21:56
【问题描述】:

我正在尝试使用 Perl 在 Linux 上复制我的 C#/XPath 代码。我将示例 8-6 中的代码复制并粘贴到 Perl & XML 中。如果我理解正确,我应该能够运行那个 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 上运行。

【问题讨论】:

标签: perl xpath


【解决方案1】:

来自perldiag

找不到 %s

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

你没有安装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');
}

libpragma:

use lib '/path/to/lib';

【讨论】:

  • 那行得通,它安装了一切,但现在我收到这个错误 - “在 /usr/lib/per5/site_perl/5.8.8/XML/XPath.pm 第 65 行找不到路径" 我也使用 cpan 安装了它。
【解决方案2】:

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

最好使用操作系统包;例如在 debian 衍生的操作系统(如 Debian 或 Ubuntu)上

$ apt-get install libxml-xpath-perl

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

$ cpan XML::XPath

【讨论】:

  • 啊,我明白了。我在 RedHat 5.5 上运行它,我会尝试看看是否可以找到它的安装。我会回复它,该解决方案有效!谢谢!
  • 那行得通,它安装了一切,但现在我收到这个错误 - “在 /usr/lib/per5/site_perl/5.8.8/XML/XPath.pm 第 65 行找不到路径" 我也使用 cpan 安装了它。
  • 嗯,No path to find 错误很可能是一个实际的 XPath 错误,抱怨它在您的数据结构中找不到请求的节点。这听起来不像是 perl 错误。
【解决方案3】:

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

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,检查依赖项(并安装任何缺少的),制作,测试并为您安装它。查看here 了解有关使用 CPAN 的更多信息。

【讨论】:

  • 那行得通,它安装了一切,但现在我收到这个错误 - “在 /usr/lib/per5/site_perl/5.8.8/XML/XPath.pm 第 65 行找不到路径" 我也使用 cpan 安装了它。
猜你喜欢
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多