根据此评论:
您也不应在中使用单引号
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] 删除。
我来说两句