2010-03-04 21 views

回答

18

先放CODEREF說法:

sub function (&$) { 
    my $code = shift; 
    my $param1 = shift; 
    # do something with $param1 and $code 
} 

function { print "i'm inside the coderef\n" } "whatever"; 

見perlsub手冊頁,其中部分內容如下:

一個「&」需要一個匿名的子程序,其中,如果傳遞的第一個參數, 不需要「sub」關鍵字或後續逗號。
+0

它是第一個參數時爲什麼不起作用? – Geo 2010-03-04 18:59:22

+5

@Geo,它可以工作,但你需要更明確:'function(「whatever」,sub {print「我在coderef \ n」});'name BLOCK EXPR'語法只適用於if coderef首先出現。 – friedo 2010-03-04 19:03:03

+4

僅僅因爲它是這樣設計的。我懷疑讓它擺在首位的主要原因是讓用戶編寫子程序,這些子程序可以像內置函數一樣調用,只需要一小段代碼(如map和grep),但任何更靈活的東西都可能會快速混淆。 – Sean 2010-03-04 19:04:10

-3

這裏, $ &是一個Perl的特殊變量,用於匹配確切的模式。 (你在上下文中錯誤地使用了它) $`用於匹配給定模式之前的字符串。 $'用於匹配給定模式後的字符串。

+1

在OP使用它的上下文中,它是一個函數原型。請參閱http://perldoc.perl.org/perlsub.html#Prototypes – friedo 2010-03-05 06:00:54

相關問題