在本地使用XML::Twig而不在Perl中安装
我已经用Perl编写了一个相对较大的脚本。它的一部分现在应该能够操作XML数据。据我所知,XML::Twig将是这种操作的合适模块。由于完成的程序无法在我的机器上运行,并且我无法在目标系统上安装额外的软件包,因此我决定在本地使用XML::Twig。因此,我将它复制到脚本的子文件夹中,并用在本地使用XML::Twig而不在Perl中安装,xml,perl,porting,Xml,Perl,Porting,我已经用Perl编写了一个相对较大的脚本。它的一部分现在应该能够操作XML数据。据我所知,XML::Twig将是这种操作的合适模块。由于完成的程序无法在我的机器上运行,并且我无法在目标系统上安装额外的软件包,因此我决定在本地使用XML::Twig。因此,我将它复制到脚本的子文件夹中,并用use lib“$FindBin::Bin/foreign/”加载它(在路径foreign/XML/Twig.pm下找到了Twig.pm)和使用XML::Twig 在我的Windows7机器上,它工作得非常好。现
use lib“$FindBin::Bin/foreign/”加载它
(在路径foreign/XML/Twig.pm
下找到了Twig.pm
)和使用XML::Twig代码>
在我的Windows7机器上,它工作得非常好。现在,我已经在Linux环境(Ubuntu)上进行了尝试,这是以后需要的,但出现以下错误:
在@INC中找不到模块XML::Parser::Expat的可加载对象
我真的不想写我自己的库,我不能在这个系统上安装额外的软件包(但在这种情况下它应该可以工作)。每一条建议都将不胜感激。缺少XML::Parser::Expat的部分。重新安装它
这是CPAN发行版的一部分。按照自述文件中的说明操作。您不仅需要在本地复制XML::Twig,还需要Twig使用的每个其他非核心模块(以及Twig使用的模块等)
它可能在您的PC上工作的一个原因是,您在该PC上安装了XML::Parser::Expat,但它不在Linux机箱中。将此(以及所有其他依赖模块)包含在“外部”文件夹中,您可以创建脚本+模块的“可移植”版本
为了回答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;
}
怎么用?请记住,像sudo-apt-get-install…
这样的东西不是一个选项。如果你不能安装你所依赖的库,请重写你的代码以不使用这些库。好吧,我正试图避免从头开始编写XML解析器。。。因此,我想检查是否还有其他可能遵循我需要的说明,通过perl Makefile.PL
安装它,我没有足够的用户权限,如果不清楚,下面的一行建议使用perl Makefile.PL
,这一行建议使用另一种用法,允许您指定文件的安装位置perl Makefile.PL PREFIX=~/perl5 LIB=~/perl5/LIB
是我在开始使用perlbrew
之前使用的。我已经将XML::Parser
模块添加到路径中,但它没有改变任何东西。。。如果我是对的,那么这个模块应该包含XML::Parser::Expat
?请参阅我文章的第二部分。这是一个单独的模块/文件。我理解,但我找不到下载链接或其他东西。。。总是作为XML::Parser的一部分,例如:如果您将Expat.pm复制到“foreign/XML/Parser/Expat.pm”,这不管用吗?如果没有,请共享“外来”文件夹树的确切当前内容,以及您现在遇到的错误。我编辑你的帖子可能比在这里添加评论更容易。你的诊断不正确。只有在安装了一些XML::Parser::Expat时,才会出现该消息。“我无法在此系统上安装额外的软件包”不是真的。如果可以从SO安装代码,则可以从CPAN安装代码。CPAN找不到镜像,因为adminCPAN阻止了端口,但不是吗?如果你愿意的话,我可以把文件复制到这里。对不起,我不知道你说的“那么”是什么意思?这个网站,StackOverflow