Perl字符串,字符串中的变量后跟单引号,另一个字符做什么?

时间:2016-09-07 02:02:42

标签: string perl

我刚刚遇到了我的第一个奇怪的" 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在我给出的第一个案例中做了什么以及它的用途是什么。

1 个答案:

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