问题Is space supposed to be ignored between a sigil and its variable name?得到了肯定的回答。
Perl将$ foo
解释为$foo
的原因是什么?
perl -w -E 'my $ foo = $$; say "Perl $]\n\$ foo = ", $foo'
Perl 5.028001
$ foo = 3492
不是针对The Syntax of Variable Names文档吗?
答案 0 :(得分:5)
该文档仅讨论名称,而不讨论 sigil 。标记始终可以用空格字符与名称分隔。绝对没有足够的文档,我不建议使用它,但会使用它。
答案 1 :(得分:3)
Perl没有信号,它具有“解除引用”运算符:
$ test [1]的意思是“给我这个作用域中名为“ test”的数组索引1的标量”。这就是为什么您可以在“标记”之后放置空格。
我不明白为什么每个人都这么称呼他们,这让事情变得非常混乱。 BASIC有信号,PHP有信号,但是Perl 5甚至没有信号。我希望我在学习Perl时已经意识到“信号”实际上是运算符,理解和解析引用以及取消引用将变得容易得多,更不用说对符号树的操纵了。
“签名”在perldoc中没有记录为“运算符”,但是如果您认为Perl代码是运算符,则解析Perl代码要容易得多。
稍后,在评论中进行讨论后:Perl 5使用“签名”的方式如下:https://www.oreilly.com/library/view/advanced-perl-programming/0596004567/ch01.html