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

时间:2011-05-13 14:30:49

标签: perl solaris

在Mac OSX上,这适用于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.

有什么想法吗?

谢谢, 凯利

2 个答案:

答案 0 :(得分:3)

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

尝试此测试以查看它是仅仅是CLI评估还是Perl本身:

use strict;
sub test {}

如果它在文件中传递严格模式,那么它可能会达到它的最佳状态。

答案 1 :(得分:1)

perldoc perldiag说:

  
      
  • 非法声明匿名子程序
      (F)使用sub关键字构造匿名子例程时   您必须始终指定一个代码块。请参阅perlsub
  •   

它可能位于sitecustomize.pl文件中。它看到“测试”。它正在读作'sub'。尝试在命令行上键入perl -e 'test {}'

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

perldoc perlrun了解更多信息。