在Perl的printf函数中使用引号操作符或引号

4

在阅读 Perl 源代码时,我经常看到以下的结构:

printf qq[%s\n], getsomestring( $_ );

但是通常它被写成这样

printf "%s\n", getsomestring( $_ );

问题:
有没有什么“最佳实践”是正确的方式,如果有的话
何时推荐使用更长的qq[...]而不是"..." 或者这只是纯粹的TIMTOWTDI? < p > perlop没有提到这个问题。


1
我喜欢把"..."'...'\...`看作是qq"..."q'...'qx`...``的快捷方式。 - Brad Gilbert
2个回答

6

您可以使用qq()作为替代的双引号方法,例如在字符串中有双引号时。例如:

"\"foo bar\""

写得更好看

qq("foo bar")

在使用双引号的Windows命令提示符中,我经常使用qq()进行插值。例如:

perl -lwe "print qq($foo\n)"
< p > qq() 操作符 -- 与许多其他的 Perl 操作符如 s///, qx() 一样 -- 也很方便,因为它可以使用几乎任何字符作为分隔符:

qq[this works]
qq|as does this|
qq#or this#

当你的字符串中有许多不同的分隔符时,这非常实用。例如:

qq!This is (not) "hard" to quote!

关于最佳实践,我会建议使用更易读的方式。

2

当字符串中包含引号时,我通常使用qq[...],例如:

qq["here you are", he said]

如果不是这样的话,我更喜欢使用双引号"",因为这样更易读。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接