我在Perl中编写了一个相对较大的脚本。它的一部分现在应该能够操纵XML数据。据我所知,XML :: Twig将是这种操作的合适模块。由于完成的程序没有在我的机器上运行而且我无法在目标系统上安装额外的软件包,所以我决定在本地使用XML :: Twig。因此,我已将其复制到我的脚本的子文件夹中,并加载use lib "$FindBin::Bin/foreign/";
(Twig.pm
在路径foreign/XML/Twig.pm
)和use XML::Twig;
下找到。
在我的Windows 7机器上它完美运行。现在我已经在Linux环境(Ubuntu)上尝试过,这在以后需要,但有以下错误:
Can't locate loadable object for module XML::Parser::Expat in @INC
我真的不想编写我自己的库,而且我无法在这个系统上安装额外的软件包(但它应该在这种情况下工作)。每个建议都将不胜感激。
答案 0 :(得分:1)
缺少XML :: Parser :: Expat的位。重新安装。
这是CPAN上XML-Parser发行版的一部分。按照自述文件中的说明进行操作。
答案 1 :(得分:1)
您不仅需要本地复制XML :: Twig,还需要Twig使用的所有其他非核心模块(由Twig等使用的模块使用)。
它可能在您的PC上运行的一个原因是您在该PC上安装了XML :: Parser :: Expat,但它不在Linux机器上。在“foreign”文件夹中包含此(以及所有其他相关模块),您可以创建脚本+模块的“可移植”版本。
要回答op对此初始帖子的后续评论,XML :: Parser :: Expat不是XML :: Parser的一部分,它是独立的。请参阅我的XML :: Parser副本的开头部分:
BEGIN {
require XML::Parser::Expat;
$VERSION = '2.41';
die "Parser.pm and Expat.pm versions don't match"
unless $VERSION eq $XML::Parser::Expat::VERSION;
}