我有一个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环境。
答案 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下方可能有所帮助。