定義變量與* vs a $有什麼區別?例如:
local $var;
local *var;
定義變量與* vs a $有什麼區別?例如:
local $var;
local *var;
最初的字符被稱爲sigil,並且表示標識符代表什麼樣的值。你會知道他們中的大部分。下面列出了
美元$
是標值
在標誌@
是陣列值
百分比%
是哈希值
Ampers和&
是代碼值
的Asterisk *
是類型團
你不太可能所遇到的最後兩個最近,因爲調用子程序時&
一直沒有必要自從Perl 5.0發佈以來。而typeglobs是一個包含所有其他類型的特殊類型,並且更少使用。
我在考慮進入所有這一切需要多深,但會留下我現在的答案。根據出現的評論,我可能寫更多。
$var
是一個標量。 *var
是一個typeglob。 http://perldoc.perl.org/perldata.html#Typeglobs-and-Filehandles
這不是最嚴格意義上的變量。你通常不應該使用它。
嘿,謝謝!我以前從來沒有見過類型球,所以我很難找到自己的答案... – erichar7 2014-09-22 18:15:46
http://perldoc.perl.org/perldata.html#Typeglobs-and-Filehandles – toolic 2014-09-22 18:01:36
此外,你幾乎可以肯定是使用'my'而不是'local'。 – AKHolland 2014-09-22 18:10:05
需要注意的是,typeglobs是特定於包範圍變量的,並且用'my'聲明的變量不具有關聯的typeglob或符號表項。與此相關的文件非常密集,作爲參考材料比介紹材料更有用。我建議布魯斯·格雷的[Why'my'?](http://www.youtube.com/watch?v=Ton-5tvDQiE)談話,因爲它幫助我將包變量理解爲Perl的歷史人造物和特定情況其中它們繼續有用(例如進口)。 – Slade 2014-09-22 18:31:38