2011-05-13 98 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

相關問題