3

リモート サーバーで perl スクリプトをテストする必要があります。実行してみましたが、エラーが発生しました

Can't locate Date/Manip.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . 

そこで、DateManip.pm ファイルをダウンロードし、記載されている場所のいずれかにコピーしようとしました。しかし、これらの場所にファイルをコピーする権限がありません。この *.pm ファイルを自分のディレクトリに置いてそこから呼び出す方法はありますか、それともそれらの場所のいずれかに配置する必要がありますか?

4

2 に答える 2

7

これを行う正しい方法は明らかに DateManip.pm をインストールすることですが、何らかの理由でインストールできない場合は、モジュールを書き込み権限のある任意のディレクトリにコピーし、perl スクリプトを変更して以下を含めることができます。

 use FindBin qw($Bin);
 use lib "$Bin/<relative_path_to_module>";

<relative_path_to_module>DateManip.pm があるディレクトリへの相対パスです。したがって、モジュールへの相対パスが ../lib の場合、次のようになります。

use FindBin qw($Bin);
use lib "$Bin/../lib";
于 2010-08-26T10:49:41.213 に答える
3

デフォルトでは、Perl は現在のディレクトリ (実行されている場所) でモジュールを探します。したがって、次のように動作します。

./your_program.pl     <= "use DateManip"
./DateManip.pm

モジュールが Date::Manip と呼ばれていた場合、構造は次のようにする必要があります。

./your_program.pl     <= "use Date::Manip"
./Date/
./Date/Manip.pm
于 2010-08-26T11:51:34.583 に答える