我刚刚遇到了我的第一个奇怪的" quirk" Perl很长一段时间。我似乎无法在网上找到任何文档,我也不知道Perl在做什么。
让我们切入追逐:
my $name = "Steve";
my $v = "$name's name is $name";
$ v的价值结果将是"名字是史蒂夫"。我使用vim,第一个$ name变成奇怪的颜色(绿色而不是普通的蓝绿色)。所以我知道这是一个众所周知的功能,但我不明白发生了什么。
对于那些可能想要提出替代方案的人,我知道我可以做任何一件事而没有任何问题:
$v = $name . "'s name is $name";
$v = "${name}'s name is $name";
我很好奇Perl在我给出的第一个案例中做了什么以及它的用途是什么。
答案 0 :(得分:6)
引用perlmod,
旧的包分隔符是单引号,但现在是双冒号 首选分隔符,部分原因是因为它对人类更具可读性, 部分原因是因为它对emacs宏更具可读性。它也使 C ++程序员感觉他们知道发生了什么 - 而不是 使用单引号作为分隔符,在那里制作Ada 程序员觉得他们知道发生了什么。因为 仍支持旧式语法以实现向后兼容性, 如果您尝试使用
"This is $owner's house"
这样的字符串,那么您就是 访问$owner::s
;也就是包owner
中的$ s变量, 这可能不是你的意思。使用大括号消除歧义,如 在"This is ${owner}'s house"
。
您也可以使用"This is $owner\'s house"
。