BEGIN:在Perl中找不到命令

时间:2013-07-19 07:01:11

标签: perl

我有一个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环境。

2 个答案:

答案 0 :(得分:1)

显然它被解释为bash脚本。如果shebang line与你粘贴它完全一样,那么perl二进制文件肯定有问题。你是不是试图以无效的方式运行它,例如从shell中“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$ 

答案 1 :(得分:1)

如果你无法阻止perl脚本作为shell脚本执行,那么添加魔术线

eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
    if 0; # not running under some shell
在shebang下方可能有所帮助。

相关问题