2011-07-29 24 views
1

私は手動で実行するとうまく動作するperlスクリプトを持っていますが、cronでは動作しません。私のperlスクリプトは、それが動作していないために次のような声明を持っています。[ログファイルから検索] - push(@INC, '/var/a.pm'); 私はそれを修正する方法がわかりません。Perlスクリプトがcrontabで動作しない

+0

権限の問題である可能性がありますか?あなたのcronジョブは/ var /に権限を持っていますか? – DavidO

答えて

1

ファイル名ではなくディレクトリ名を@INCディレクトリにプッシュする必要があります。試してみてください:

BEGIN { push @INC, '/var'; }; ## use BEGIN so we can "use" modules 
## now this will work 
use a; 

これでうまくいかない場合は、受け取ったエラーについて詳しく説明する必要があります。

+0

"require"が機能するのに対して、 "use"はcronではうまく動作しません。どうしてこんなことに ? –

+0

"use"はコンパイル時に実行されるので、何も使用する前にBEGINブロックの中に@INC配列を構築する必要があります。 – gpojd

+0

ねえ、私はそれを試みましたが、成功しませんでした。以前は: - 'push(@INC、 '/var/a.pm');'に変更しました - 'BEGIN {push(@INC、 '/ var'); }; a;を使用します。..... cronでは動作しません。 @INCにa.pmを置くことはできません(@INCには/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/site_perl/5.8.8/usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8/usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/5.8.8。)at /var/a.pl line 11. BEGINは失敗しました。 –

関連する問題