4

我正在尝试使用 Perl 在 Linux 上复制我的C#/代码。我在Perl & XMLXPath中复制并粘贴了示例 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 上运行。

4

3 回答 3

9

来自perldiag

找不到 %s

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

你没有安装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语用:

use lib '/path/to/lib';
于 2012-06-25T16:24:49.180 回答
3

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

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

$ apt-get install libxml-xpath-perl

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

$ cpan XML::XPath
于 2012-06-25T16:15:11.960 回答
0

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

Can't locate XML/XPath.pm

在 Perl 中,巨大的好处在于使用其他人为您编写并且您可以重用的模块或库。在这种情况下,有人编写了一个名为 XML::XPath 的模块(在 Perl 中,路径由 '::' 划定),您只需安装它。安装它的最简单方法是 via cpan,它是大多数 Perl 安装附带的工具。赶紧跑:

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

这将获取 XML::XPath,解包,生成 Makefile,检查依赖项(并安装任何缺少的),制作,测试并为您安装它。在此处查看有关使用 CPAN 的更多信息。

于 2012-06-25T16:14:26.353 回答