因此,对于特定的CGI perl脚本,我已经包含了这样的JSON来处理一些.json文件:
use lib "./modules/JSON/lib";
use JSON;
这很好用。 Web目录包含模块文件夹中所需的文件。
但是,JSON模块非常慢。我读到JSON:XS可以更快,更快但我似乎不能简单地使用它:
use lib "./modules/JSON-XS";
use JSON::XS;
JSON-XS文件中没有lib文件夹,我尝试过使用组合(即使用两个文件夹等),但它没有用。
不,我不能简单地为这个特定的项目安装模块。
感谢任何帮助。
答案 0 :(得分:2)
不,我不能简单地为这个特定的项目安装模块。
如果不安装模块,则无法使用模块。你刚刚完成了半天的工作。但是,这对JSON :: XS不起作用。它之所以快,是因为它是用C语言编写的,所以你需要编译C代码。到目前为止,最简单的方法是使用提供的安装程序而不是重新发明轮子。
(你知道你可以将模块安装到任何目录中,并且这不需要特殊权限,对吗?)
答案 1 :(得分:1)
Perl发行版通常在卸载状态下可用。您只需要致电perl Makefile.PL && make
(或基于Module::Build
的分发:perl Build.PL && ./Build
)。这将完成所有必要的编译(如果它是XS模块)并将库文件复制到blib
子目录中。在您的脚本而不是use lib
中,您可以编写use blib
:
use blib "/path/to/JSON-XS";
请注意,如果模块具有依赖项,则必须自行解决并添加许多use blib
语句。 JSON::XS
没有那么多依赖项,但对其他模块来说真的很不方便。在这种情况下,您应该寻求另一种解决方案,例如将CPAN.pm
与local::lib
一起使用。
答案 2 :(得分:0)
好的,这最终对我有用:
我对所有依赖项(按照不依赖于更多依赖项的顺序)执行此过程
export PERL5LIB = ~/path/to/modules/perl5
perl Makefile.PL PREFIX=$PERL5LIB LIB=$PERL5LIB
make
make test
make install
这将所有模块安装到我称为perl5的目录中。这也意味着当您尝试在本地安装其他模块时,由于添加了PREFIX / LIB,因此不会出现依赖性问题。
然后我所做的就是将它添加到我的perl CGI脚本中:
use lib "./modules/perl5";
use JSON::XS;
PS:JSON :: XS快得多!
:d