簡體   English   中英

無法在CGI perl腳本中本地包含JSON :: XS模塊,但可以包含JSON模塊

[英]Can't include JSON::XS module locally in CGI perl script but can include JSON module

因此,對於特定的CGI perl腳本,我包括了JSON這樣的代碼來處理一些.json文件:

use lib "./modules/JSON/lib";
use JSON;

這很好,很好。 Web目錄在modules文件夾中保存所需的文件。

但是,JSON模塊非常慢。 我讀到JSON:XS可以快很多,但是我似乎不能簡單地這樣使用它:

use lib "./modules/JSON-XS";
use JSON::XS;

JSON-XS文件中沒有lib文件夾,我嘗試過組合使用(即同時使用文件夾等),但沒有用。

不,我不能簡單地為此特定項目安裝模塊。

任何幫助表示贊賞。

不,我不能簡單地為此特定項目安裝模塊。

您必須先安裝模塊,然后才能使用它。 您只是在半途而廢。 不過,這不適用於JSON :: XS。 它之所以快是因為它是用C編寫的,因此您需要編譯C代碼。 到目前為止,最簡單的方法是使用提供的安裝程序,而不是重新發明輪子。

(您知道可以將模塊安裝到任何目錄中,並且不需要特殊權限,對嗎?)

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.pmlocal::lib一起使用。

好的,這終於對我有用:

我對所有依賴項都執行了此過程(按照從不依賴關系到更多依賴關系的順序)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM