【问题标题】:Can't locate XML/XPath.pm in @INC在 @INC 中找不到 XML/XPath.pm
【发布时间】:2014-12-01 02:45:49
【问题描述】:

我有一个.pl 脚本,其中开始于:

#!/usr/bin/perl
use XML::XPath;
use Getopt::Long;

我似乎无法通过perl myScript.pl 运行它,出现此错误:

(@INC contains: /usr/share/ /usr/local/lib64/perl5 /usr/local/share/perl5/usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at most_generic_wrapper.pl line 3.
BEGIN failed--compilation aborted at myScript.pl line 3.

1- 我试图找到XPath.pm 文件并将其导出为:

export PERL5LIB=/usr/share/perl5/XML/Twig

export PERL5LIB=/usr/share/perl5/XML

2- 已安装perl -MCPAN -e 'install XML::Parser'

3- 使用 -I 明确定义路径为:

perl -I perl -MCPAN -e 'install XML::Parser' myScript.pl

4- 将第 3 行更改为 use XML::Twig::XPath; 导致:

cannot use XML::Twig::XPath: neither XML::XPathEngine 0.09+ nor XML::XPath are available at /usr/share/perl5/XML/Twig/XPath.pm line 11.
BEGIN failed--compilation aborted at /usr/share/perl5/XML/Twig/XPath.pm line 13.` 

但他们都没有解决问题,我在第 3 行一直收到同样的错误。

P.S:在 CentOS 6.2 上运行 kernel 2.6.32-358perl --version=v5.10.1 (*) built for x86_64-linux-thread-multi

任何帮助将不胜感激,

【问题讨论】:

  • 应该是export PERL5LIB=/usr/share/perl5
  • 我试过了,没用。同样的错误。 Can't locate XML/XPath.pm in @INC (@INC contains: /usr/share/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at myScript.pl line 3.
  • 帖子的早期版本暗示 /usr/share/perl5/XML/XPath.pm 存在。如果没有,export PERL5LIB=/usr/share/perl5 也无济于事。
  • 是的,但是文件错误。我说/usr/share/perl5/XML/XPath.pm
  • (您可能不必设置PERL5LIB。我认为您的perl 已经在/usr/share/perl5 中查找。)

标签: perl xpath include centos


【解决方案1】:
  1. 您的标题显示找不到 XML::XPath,但您的问题表明您尝试安装 XML::Parser。您是否尝试安装 XML::XPath?

  2. 来自man perlrun:“如果未定义 PERL5LIB,则为 PERLLIB”。您似乎尝试过设置 PERLIB5(注意拼写差异:var 是 PERL5LIB(或 PERLLIB),而不是 PERLIB5)。

  3. 来自man perlrun:“PERL5LIB - 在查看标准库和当前目录之前要在其中查找 Perl 库文件的目录列表。”您似乎已尝试将其设置为 .pm 文件的完整路径,而不是目录。

  4. 您分配的文件将是 XML::Twig::XPath,而不是 XML::XPath;这是两个不同的 Perl 模块。

编辑:查看您修改后的问题后:

  1. 我不确定您的脚本是否需要 XML::Twig::XPath 或 XML::XPath,或者其中任何一个都可以提供您需要的 API。但是,XML::Twig::XPath 似乎依赖于 XML::XPath,所以无论如何你都需要 XML::XPath,而且看起来你的系统上没有安装 XML::XPath。我认为这可能是主要问题。请尝试使用 CPAN 安装 XML::XPath。

  2. PERL5LIB 变量的值(或 -I 选项的参数)应该是位于包限定模块文件基础的目录。例如,如果 XML::XPath 位于 ~/perl_custom_modules/XML/XPath.pm,那么您需要将 PERL5LIB(或 -I 参数)设置为 ~/perl_custom_modules。 XML目录是模块包限定的一部分,所以不需要包含在包含路径中。

【讨论】:

  • 感谢您的回答,并为您的错字道歉!我现在正在修改这些。
  • @Amir,为什么?您没有解决 bgoldst 提出的问题(您正在安装 XML::Parser,但缺少的是 XML::XPath。)
  • @bgoldst,听起来他想要 XML::Twig::XPath,并且它需要(XML::XPathEngine 或)XML::XPath
  • @ikegami 从我对search.cpan.org/~mirod/XML-Twig-3.48/Twig.pm的阅读来看,如果您使用 XML::Twig::XPath,它会自动尝试使用 XML::XPath 作为其 xpath 引擎。跨度>
  • 实际上对于最近(我认为不到 6 年)版本的 XML::Twig,它将首先查找 XML::XPathEngine,然后,如果不可用,则查找 XML::XPath跨度>
猜你喜欢
  • 1970-01-01
  • 2017-07-13
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2013-10-24
相关资源
最近更新 更多