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