为什么Perl变量需要以$,%,@(sigils)开头?

joe*_*joe 23 variables perl

为什么Perl变量需要以不同的字符(sigils)开头?

  • 标量变量以 $

  • 哈希开头 %

  • 数组开始于 @

他们为什么喜欢这个?

Rob*_*lls 60

当我开始使用Perl时,向我解释说这些字符的选择是因为:

  • $看起来有点像一个"s",这样是为小号 calars,
  • @在中间有一个'a',所以这是一个 rrays,和
  • % 是为了哈希,因为它看起来像一个键值对除以斜线.

  • 有趣的答案:-) (7认同)
  • 是的,骆驼书讲的是同一个故事.或者至少,由于这些原因,它并没有说它们实际上是被选中的,但是你可以更好地记住它们与那些助记符的代表. (7认同)
  • 如果你使用大量的诗歌许可,我也认为%看起来有点像哈希的"H". (2认同)

And*_*are 35

这是因为Perl使用了sigils:

在计算机编程,一个印记(发音/'sɪdʒ.ɪl/或/'sɪg.ɪl/;复数sigilia或印记)是连接到变量名称的符号,示出了变量的数据类型或范围.该术语首次应用于1999年Philip Gwyn的Perl使用,以取代变量名前面更加繁琐的"有趣角色".这个名字是基于一个神奇的符号(见sigil(magic)).


Leo*_*era 22

Larry Wall等人在"Programming Perl" 中解释了几个原因:

在任何给定的命名空间内,每个变量类型都有自己的子名称空间,由有趣的字符决定.您可以在不担心冲突的情况下,为标量变量,数组或散列使用相同的名称(或者,就此而言,使用文件句柄,子程序,标签或宠物美洲驼.)

[...]

与大多数计算机语言一样,Perl有一个保留字列表,它被识别为特殊关键字.但是,因为变量名始终以有趣的字符开头,所以保留字实际上不会与变量名冲突.

  • 命名空间保护是IMO的主要好处.++! (4认同)
  • 这使得Perl成为Lisp 4(如果计算*GLOB则为5) (3认同)
  • @cftarnas:我希望您的评论中有多个错误,而不是语言的正确用法。我真的不知道,因为我刚刚开始学习 Perl。无论如何,如果您的目标是证明 Perl 对 sigil 的使用并不令人困惑,那么我认为您没有成功。也许*已经*掌握 Perl 的人会不同意我的观点。 (3认同)
  • 您是否也可以在不同的"上下文"中使用变量这一事实是否会让事情变得非常混乱?这不是不可能使用相同名称的不同变量吗? (2认同)

dav*_*420 11

  • 因为Perl旨在替换shell脚本,并且shell中的变量以$.
  • 区分标量($),数组(@)和散列(%).


yst*_*sth 11

http://www.wall.org/~larry/natural.html:

英语使用数字和单词顺序,在代词中用案例系统的痕迹:"男人看着男人,他们回头看着他." 在这句话中,对于向谁做的事情是完全清楚的.同样,Perl在其名词上有数字标记; 也就是说,$ dog是一个狗,而@dog(可能)很多.所以$和@有点像英语中的"this"和"these".