为什么Perl忽略符号名称和变量名称之间的空格?

时间:2019-06-05 15:21:07

标签: perl perl5

问题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文档吗?

2 个答案:

答案 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