Perl中“和”之间的区别

欧根·康科夫(Eugen Konkov)

根据评论:

您也不应在中使用单引号print ">>${ '_<$filename' }<<\n"而是尝试:print ">>${ \"_<$filename\" }<<\n"

我一直认为"之间的区别'只是字符串是否被解释。

我想问为什么在这种情况下:

print ">>${ \"_<$filename\" }<<\n"
print ">>${  '_<$filename'  }<<\n"

perl打印不同的值?

为什么我应该使用\"而不是仅仅'在这里?

胸部

发生的情况是,在两种情况下,$filename都不是通过外部字符串(">>...<<\n")进行插值,而是通过${ ... }(这只是从行为中得出的推论)。这意味着">>${ '_<$filename' }<<\n"$filename没有在所有的内插式,而它在">>${ \"_<$filename\" }<<\n"

如果它是由外部字符串插入的,那么如果您的字符串包含引号,则会遇到一些麻烦:

$filename = "ab'cd";

如果插值是由外部字符串完成的,则"${'$filename'}"等效于"${'ab'cd'}",这是语法错误。或者也许"${ab'cd}"等同于"${ab::cd}"; 也不是你想要的。

而如果插位是指${},那么"${'$filename'}"${...}是真的${"$filename"}(没有逃脱双引号),其中内插$filename,和你喜欢的东西${"ab'cd"},就像你想要的。


考虑以下示例:

$abcd = "First var";
${'$v'} = "Second var";
$v = "abcd";

say "${\"$v\"}"; # prints "First var"
say "${'$v'}";   # prints "Second var"

这表明有"${\"$v\"}"$v被插入,而用"${'$v'}",它不是。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章