我知道這&是呼叫子例程的舊語法:
sub test { die 'xx' };
&{ "main::test" };
OUTPUT:
xx at main.pl line 1.
但是為什么我使用時不呼叫子程式defined &{ "main::test" }?
sub test { die 'xx' };
print defined &{ "main::test" };
OUTPUT:
1
uj5u.com熱心網友回復:
記錄在perlsub中:
可以使用顯式
&前綴呼叫子例程。在&現代 Perl 中是可選的,如果子例程已經預先宣告,括號也是可選的。僅在命名子例程時不是可選的&,例如當它用作defined () 或undef () 的引數時。當您想使用&$subref()or&{$subref}()結構使用子例程名稱或參考進行間接子例程呼叫時,它也不是可選的,盡管該$subref->()表示法解決了該問題。有關這一切的更多資訊,請參見perlref。
在defined下,您可以找到(類似地在undef和exists下):
你也可以
defined(&func)用來檢查子程式 func 是否已經被定義。
后面的括號defined是可選的(類似于預先宣告的 sub 后面的括號)。有關詳細資訊,請參見perlfunc。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/464673.html
標籤:perl
