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: `}'*****

我认为错误是由于它试图通过 shell 而不是通过 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 脚本。如果 shebang 行与您粘贴的完全一样,那么它一定是 perl 二进制文件有问题。您不尝试以无效的方式运行它,例如使用“bash test.pl”或来自 shell 的“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 脚本作为 shell 脚本执行,则添加魔术线

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

在shebang下方可能会有所帮助。

于 2013-07-19T08:20:24.743 回答