繁体   English   中英

是否可以在Perl脚本中手动包括CPAN库?

[英]Is it possible to manually include a CPAN library in a Perl script?

我所处的情况是,我编写了一个使用CPAN库XML :: Simple的perl脚本,并在能够安装必要的CPAN库的环境中进行了测试。

但是,必须在其中运行脚本的环境没有安装CPAN库的权限。 我想知道是否有一些手动方式将Simple.pm文件包含在脚本中,并将其包含在脚本目录中? 我尝试使用“使用”和“要求”都无济于事。

任何帮助是极大的赞赏。

编辑:我能够通过手动下载Simple.pm文件并使用要求“ Simple.pm”的行来解决该问题; 在我的代码中。 我想我最初尝试此方法时肯定已经下载了不正确的文件。 谢谢。

由于XML::Simple是纯Perl模块,因此您可以下载该软件包,提取并使用它。 您将必须使用lib pragma指定包含模块的目录。

假设您的目录结构为(仅包含相关文件):

my_app.pl
XML-Simple
XML-Simple/lib
XML-Simple/lib/XML
XML-Simple/lib/XML/Simple.pm

通过包含以下代码,您的my_app.pl将可以访问XML::Simple

use lib 'XML-Simple/lib';
use XML::Simple;

当然,您可以在模块中包含XML :: Simple本身,但是XML :: Simple本身取决于其他模块。 它需要XML :: Parser(取决于周围的libexpat)或XML :: SAX。 XML :: SAX包括XML :: SAX :: PurePerl,这是一个缓慢的(并且很久以前我上次检查时不完整)的纯perl解析器。 另外,XML :: SAX可以使用XML :: LibXML(取决于libxml2)或XML :: SAX :: Expat

底线:如果您希望应用程序是独立的,则至少需要包含XML :: Simple和XML :: SAX,并且要处理一定量的数据,您可能还需要C解析库。

我能够通过手动下载Simple.pm文件并使用要求“ Simple.pm”的行来解决该问题; 在我的代码中。 我想我最初尝试此方法时肯定已经下载了不正确的文件。

您可以在另一台计算机上手动下载CPAN模块并将其安装在目标环境中吗? http://www.thegeekstuff.com/2008/09/how-to-install-perl-modules-manually-and-using-cpan-command/

我做这样的事情:

use FindBin;

BEGIN {
  unshift @INC $FindBin::Bin
}

然后

use XML::Simple;

应该可以正常工作,它使您可以使用脚本释放软件包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM