为什么Perl变量需要以不同的字符(sigils)开头?
标量变量以$
哈希以%
数组以@
为什么他们喜欢这个?
答案 0 :(得分:59)
当我开始使用Perl时,向我解释说这些字符的选择是因为:
$
看起来有点像's'所以那是 s calars,@
中间有'a',因此 a rrays,%
用于哈希,因为它看起来像是一个用斜线划分的键值对。答案 1 :(得分:35)
这是因为Perl使用sigils:
在计算机编程中,一个印记 (发音为/'sɪdʒ.ɪl/或/'sɪg.ɪl/; 复数sigilia或sigils)是一个象征 附加到变量名称,显示 变量的数据类型或范围。该 术语首先应用于Perl使用 由Philip Gwyn于1999年取代 更加繁琐的“有趣的人物” 变量名称的前面“。名称是 基于这个词的意思是一个神奇的 符号(见sigil(magic))。
答案 2 :(得分:22)
拉里·沃尔等人在“编程Perl”中提到了explained的几个原因:
在任何给定的命名空间[...]中,每个变量类型都有自己的子名称空间,由有趣的字符决定。您可以在不担心冲突的情况下,为标量变量,数组或散列使用相同的名称(或者,就此而言,使用文件句柄,子程序,标签或宠物美洲驼。)
[...]
与大多数计算机语言一样,Perl有一个保留字列表,它被识别为特殊关键字。但是,因为变量名始终以有趣的字符开头,所以保留字实际上不会与变量名冲突。
答案 3 :(得分:11)
$
开头。$
),数组(@
)和散列(%
)。答案 4 :(得分:11)
http://www.wall.org/~larry/natural.html:
英语使用数字和单词顺序,在代词中用案例系统的痕迹:“男人看着男人,他们回头看着他。”在这句话中,对于向谁做的事情是完全清楚的。同样,Perl在其名词上有数字标记;也就是说,$ dog是一个狗,而@dog(可能)很多。所以$和@有点像英语中的“this”和“these”。
答案 5 :(得分:2)
并非所有这些都有,有些以%(哈希)或@(数组)开头。
将它们标记为变量并表示其类型是一种设计决策。
请注意,您可以同时拥有$abc
和%abc
。