4

阅读perl源我多次看到下一个构造:

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

通常写成

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

问题:

  • 这里有什么“好的做法”什么是正确的方法,如果是的话
  • 什么时候推荐使用更长qq[...]的 vs 的"..."
  • 或者它只是纯粹的 TIMTOWTDI?

perlop没有提到任何关于此的内容。

4

2 回答 2

6

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

"\"foo bar\""

写出来更好看

qq("foo bar")

在使用双引号的 windows cmd shell 中,我经常qq()在需要插值时使用。例如:

perl -lwe "print qq($foo\n)"

操作符——像许多其他 perl 操作符一样,qq()s///, qx()——也很方便,因为它可以使用几乎任何字符作为分隔符:

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

当字符串中有许多不同的分隔符时,这很方便。例如:

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

至于最佳实践,我会说使用更具可读性的东西。

于 2013-05-04T07:38:59.183 回答
2

我总是qq[...]在字符串中有引号时使用,例如:

qq["here you are", he said]

如果没有,对我来说,使用""

于 2013-05-04T07:40:45.553 回答