Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在本地使用XML::Twig而不在Perl中安装_Xml_Perl_Porting - Fatal编程技术网

在本地使用XML::Twig而不在Perl中安装

在本地使用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机器上,它工作得非常好。现

我已经用Perl编写了一个相对较大的脚本。它的一部分现在应该能够操作XML数据。据我所知,XML::Twig将是这种操作的合适模块。由于完成的程序无法在我的机器上运行,并且我无法在目标系统上安装额外的软件包,因此我决定在本地使用XML::Twig。因此,我将它复制到脚本的子文件夹中,并用
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