這是代碼:當我將coderef傳遞給這個原型Perl子例程時,爲什麼會出現語法錯誤?
sub function($&) {
my $param1 = shift;
my $code = shift;
# do something with $param1 and $code
}
如果我嘗試調用它像這樣:
function("whatever") {
print "i'm inside the coderef\n";
}
我得到。如何在不需要在代碼塊前添加sub
的情況下調用它?
它是第一個參數時爲什麼不起作用? – Geo 2010-03-04 18:59:22
@Geo,它可以工作,但你需要更明確:'function(「whatever」,sub {print「我在coderef \ n」});'name BLOCK EXPR'語法只適用於if coderef首先出現。 – friedo 2010-03-04 19:03:03
僅僅因爲它是這樣設計的。我懷疑讓它擺在首位的主要原因是讓用戶編寫子程序,這些子程序可以像內置函數一樣調用,只需要一小段代碼(如map和grep),但任何更靈活的東西都可能會快速混淆。 – Sean 2010-03-04 19:04:10