Perl字符串,一个字符串中的变量,后跟单引号和另一个字符做什么?
问题描述:
我只是遇到的Perl我第奇“怪癖”,在很长一段时间。我似乎无法在网上找到它的任何文档,我不知道Perl在做什么。Perl字符串,一个字符串中的变量,后跟单引号和另一个字符做什么?
就让我们切入正题:
my $name = "Steve";
my $v = "$name's name is $name";
$ v的值会变成是“名字是史蒂夫”。我使用vim,第一个$名称变成奇怪的颜色(绿色,而不是普通的深青色)。所以我知道这是一个已知的功能,但我不明白发生了什么。
对于那些谁可能希望提出其他建议,我知道我能做到以下任一操作没有任何问题:
$v = $name . "'s name is $name";
$v = "${name}'s name is $name";
我只是很好奇,什么样的Perl在我给第一种情况在做什么,它的用途是什么。
答
引用perlmod,
老包分隔符是单引号,但现在双冒号是 首选的分隔符,部分原因是因为它更具有可读性于人类, 部分是因为它更具可读性emacs宏。这也使得 C++程序员觉得像他们知道这是怎么回事 - 因为使用单引号作为分隔符,在那里进行的Ada 程序员觉得他们知道发生了什么事情反对 。因为 老式的语法仍然支持向后兼容性, 如果您尝试使用像
"This is $owner's house"
一个字符串,你会 访问$owner::s
;也就是说,在包装owner
, $ s变量这可能不是你的意思。使用大括号来消除歧义,如 在"This is ${owner}'s house"
。
您也可以使用"This is $owner\'s house"
。
[为什么perl会将刻度转化为冒号?](http://stackoverflow.com/questions/17411126/why-does-perl-translate-a-tick-into-a-colon) – Oktalist
这是比提及的“重复”更清晰的问题和答案。我宁愿让这个问题比另一个更容易引用。 – ikegami
@ikegami关闭另一个,然后呢? – Oktalist