2011-05-13 76 views
4

在Mac OSX上做不同的事情,这工作得很好用Perl的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. 

任何想法?

感谢, 凯利

+1

我想perl -c'sub test {}'给出了同样的错误,对吧? – 2011-05-13 14:45:44

+0

perl -c'sub test {}' 无法打开perl脚本“sub”:没有这样的文件或目录 – 2011-05-13 16:32:09

+1

他的意思是'perl -c -e'sub test {}''(尽管我不知道为什么他问) – ikegami 2011-05-13 17:13:34

回答

3

这是最有可能的Perl的两个版本之间的行为差​​异。它也可能只是一个在5.8.8

试试这个测试,看看它只是CLI评价或Perl本身在CLI评估模式错误:

use strict; 
sub test {} 

如果它通过在文件中严格模式,它可能会像它会得到的一样好。

+0

我更新到5.12.3,这似乎纠正了这个问题。 – 2011-05-14 01:28:59

1

perldoc perldiag说:

  • 匿名子
    (F)的非法声明当使用关键字子,构建一个匿名的子程序, 你必须指定一个代码块。见perlsub

它也可能会被一个sitecustomize.pl文件。这是而不是看到“测试”。它读取为'sub'。尝试在命令行输入perl -e 'test {}'

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

perldoc perlrun了解更多信息。

+0

perl -e'test {}'可用,但原始版本上的-fe不适用。 – 2011-05-13 16:30:57

+1

@凯利麦克唐纳,我不认为'测试{}'应该工作。目前我在任何地方都没有5.12以前的方便程序。 – Axeman 2011-05-13 17:40:43