有人可以向我解釋下面的代碼。這種行爲已經有一段時間了(在5.8.5,5.8.8,5.10.1,5.12.2上測試過),所以它背後必然有一個原因?
$ perl -M5.012 -E '$aa=2'
Global symbol "$aa" requires explicit package name at -e line 1.
$ perl -M5.012 -E '$a=2'
謝謝。
有人可以向我解釋下面的代碼。這種行爲已經有一段時間了(在5.8.5,5.8.8,5.10.1,5.12.2上測試過),所以它背後必然有一個原因?
$ perl -M5.012 -E '$aa=2'
Global symbol "$aa" requires explicit package name at -e line 1.
$ perl -M5.012 -E '$a=2'
謝謝。
$a
(還有$b
等等)是一個全局變量。它旨在用於sort
功能,例如, sort { $a <=> $b } @list
。 perldoc perlvar
列出了perl的全部內置全局變量及其含義。
其實,我相信$ a和$ b是'包全局變量',而不是全局全局變量(如果這是有道理的話)。參見[perldoc sort](http://perldoc.perl.org/functions/sort.html),它在其中表示「...要比較的元素作爲包全局變量$ a和$ b傳遞到子例程中。 ..「。 – 2010-09-09 20:02:52
是的,它們是全局變量,不像其他全局變量那樣強制進入main :: namespace,例如'$ _'。 – rafl 2010-09-09 20:05:58
感謝拉夫和布賴恩德福伊,我應該重新檢查perldoc第一嚴格。 – est 2010-09-09 05:20:15
儘管你必須擲骰子,隨時接受其中一個答案。它會讓你的名字下面的44%變大一點。 :) – 2010-09-09 19:49:40