2014-02-20 34 views
1

我偶爾會看到Perl腳本,其中子程序被調用時帶有'&'。 這是遺產,還是它給了任何好處? 因爲調用沒有&符號的子程序也適用。帶前導''的Perl調用子程序

sub mysub { 
     print "mysub\n"; 

} 

mysub; 
&mysub; 

THX /赫爾曼

+1

http://perldoc.perl.org/perlfaq7.html#What's-the-difference-between-calling-a-function-as-%26foo-and-foo()%3f – fugu

+0

@Quentin我想你'重新提及[goto](http://perldoc.perl.org/functions/goto.html)。 –

回答

4

&調用通常是一個代碼氣味,有人不知道自己在做什麼,是在一個Perl4樣式的心態。在您的具體示例中,它的工作原理完全相同。但是,調用&會禁用函數原型,因此高級用戶可能會在某些情況下使用它。在這種情況下,您應該預計會看到一條評論爲什麼在呼叫旁邊。

+4

* Perl4的心態。*可能通過搜索學習並撿起不好的例子 – justintime

+0

非常感謝,現在我很清楚。在我的具體情況下,真正的子程序有一個原型甚至是空的原型(不知道該怎麼說):sub mysub(){...}。這隻有在你用&關閉函數原型時纔有效。 – user2050516

+0

請參閱mysub()旁邊的括號。使用()原型調用此子例程僅在您使用&像&mysub; – user2050516