0

Perl プログラムを持っていますが、実行しようとするとエラーが発生します。

*****BEGIN: command not found
+ our =/prod/home01/appl/psoft/epmapp/batch/lib
/prod/home01/appl/psoft/epmapp/batch/bin/FileTransfer.pl: line 4: our: command not found
+ push @INC,
/prod/home01/appl/psoft/epmapp/batch/bin/FileTransfer.pl: line 5: push: command not found
/prod/home01/appl/psoft/epmapp/batch/bin/FileTransfer.pl: line 6: syntax error near unexpected token `}'
/prod/home01/appl/psoft/epmapp/batch/bin/FileTransfer.pl: line 6: `}'*****

エラーは、perl 経由ではなくシェル経由でスクリプトを実行しようとしていることが原因だと思います。私のスクリプトで彼女が強打する前に余分な行がないなど、すべての基本的なことを確認しました。しかし、まだ正確な確率が何であるかを理解することはできません。

これが私たちのコードの始まりです:

#!/usr/bin/perl
BEGIN {
  our $lib_path="/prod/home01/appl/psoft/epmapp/batch/lib";
  push @INC, $lib_path;
}

Red Hat Enterprise Linux Server リリース 5.9 環境を使用しています。

4

2 に答える 2

1

明らかに、bash スクリプトとして解釈されます。シバン行が貼り付けたとおりである場合は、perl バイナリに何か問題があるに違いありません。シェルから「bash test.pl」や「source test.pl」など、不正な方法で実行しようとしていませんか? とにかく、コードは構文的に正しいです。

dtpwmbp:~ pwadas$ cat test.pl 
#!/usr/bin/perl 

BEGIN {
  our $lib_path="/prod/home01/appl/psoft/epmapp/batch/lib";
  push @INC, $lib_path;
  print $lib_path . "\n";
}
dtpwmbp:~ pwadas$ bash test.pl 
test.pl: line 3: BEGIN: command not found
test.pl: line 4: our: command not found
test.pl: line 5: push: command not found
test.pl: line 6: syntax error near unexpected token `}'
test.pl: line 6: `}'
dtpwmbp:~ pwadas$ ./test.pl 
/prod/home01/appl/psoft/epmapp/batch/lib
dtpwmbp:~ pwadas$ 
于 2013-07-19T07:53:08.247 に答える
1

シェル スクリプトとして実行されている perl スクリプトを停止できない場合は、魔法の行を追加します。

eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
    if 0; # not running under some shell

シバンの下が役立つかもしれません。

于 2013-07-19T08:20:24.743 に答える