perl在两个不同的平台上做不同的事情

perl在两个不同的平台上做不同的事情,perl,solaris,Perl,Solaris,在MacOSX上,这在perl上运行良好 perl -v This is perl, v5.8.9 built for darwin-2level perl -e 'sub test {}' 但在Solaris上 perl -v This is perl, v5.8.8 built for i86pc-solaris-thread-multi perl -e 'sub test {}' Illegal declaration of anonymous subroutine at -e line

在MacOSX上,这在perl上运行良好

perl -v
This is perl, v5.8.9 built for darwin-2level
perl -e 'sub test {}'
但在Solaris上

perl -v
This is perl, v5.8.8 built for i86pc-solaris-thread-multi
perl -e 'sub test {}'
Illegal declaration of anonymous subroutine at -e line 1.
有什么想法吗

谢谢,
Kelly

这很可能是两个版本的Perl之间的行为差异。这也可能只是5.8.8中CLI评估模式中的一个bug

请尝试此测试,看看是CLI评估还是Perl本身:

use strict;
sub test {}
如果它在一个文件中通过了严格模式,它可能会达到预期的效果。

说:

  • 匿名子例程的非法声明
    (F) 使用sub关键字构造匿名子例程时, 必须始终指定一个代码块。看
它可能位于
sitecustomize.pl
文件中。它没有看到“测试”。它把它读作
'sub'
。尝试在命令行上键入
perl-e'test{}

另外,要取出自定义文件,可以将
-f
开关添加到命令行`perl-fe'子测试{}'


更多信息。

我猜perl-c'sub-test{}也会出现同样的错误,对吧?perl-c'sub-test{}无法打开perl脚本“sub”:没有这样的文件或目录他是说
perl-c-e'sub-test{}
(尽管我不知道他为什么要问)可能的解决方法:
perl-e';子测试{}
perl-e'sub-test{;}
perl-e'test{}有效,但原始测试的-fe无效。@Kelly McDonald,我不认为'test{}有效。我现在没有5.12之前的版本。我更新到了5.12.3,这似乎已经纠正了这个问题。