1
私はPerlモジュールを作ったMyModule.pm
それはシェルスクリプトで呼びたいいくつかのサブルーチンgetText
を持っています。 私は次の方法で試しましたが、エラーが発生します。シェルスクリプトでperlサブルーチンを呼び出す
SEC_DIR=`perl -MMyModule -e 'getText'`; # line 1
echo $SEC_DIR
exit 0
エラーが返されました。
Can't locate MyModule.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .).
BEGINが失敗しました - コンパイルが中止されました。
PS:.pmファイルと.shは同じ場所にあります。 いくつかの他のオプションを試しました。
行1:
SEC_DIR=`perl -MMyModule -e '&getText'`;
SEC_DIR=`perl -MMyModule -e 'use MyModule; getText'`;
SEC_DIR=`perl -e 'use MyModule; getText'`;
おかげで、しかし、私はであなたのコードを使用する場合:モジュールをロードする
もう一つの方法は次のようになり、「」 'I'の後に同じエラーが表示されますが、 ''を削除するとそれは何もエコーしません。 getTextサブルーチンがファイルパスを返しています。 – haris
私は単純なUbuntu 10.10、perl 5.10.1でテストしました。 「-I」で現在のディレクトリは他のディレクトリの前のモジュールを検索されます。 – TomaszK
TIMTOWTDI: 'perl -e 'do" ./MyModule.pm "; getText'' –