0

したがって、特定の 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 フォルダーがありません。使用の組み合わせ (つまり、両方のフォルダーなどを使用) を試しましたが、うまくいきませんでした。

いいえ、この特定のプロジェクトのモジュールを単純にインストールすることはできません。

どんな助けでも大歓迎です。

4

3 に答える 3

2

いいえ、この特定のプロジェクトのモジュールを単純にインストールすることはできません。

モジュールをインストールしないと使用できません。あなたは中途半端な仕事をして逃げてきただけです。ただし、JSON::XS では機能しません。高速な理由は、C で記述されているためです。そのため、C コードをコンパイルする必要があります。これを行う最も簡単な方法は、一からやり直すのではなく、提供されているインストーラーを使用することです。

(モジュールを任意のディレクトリにインストールできること、およびこれには特別なアクセス許可が必要ないことはご存知ですよね?)

于 2013-11-01T13:48:28.840 に答える
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

于 2013-11-01T22:53:06.893 に答える
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

于 2013-11-02T01:41:29.877 に答える