在perl的printf中使用类似引号的运算符或引号

jm6*_*666 4 perl

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

printf qq[%s\n], getsomestring( $_ );
Run Code Online (Sandbox Code Playgroud)

通常它写成

printf "%s\n", getsomestring( $_ );
Run Code Online (Sandbox Code Playgroud)

问题:

  • 在这里任何"好的做法"是什么是正确的方法,如果是的话
  • 什么时候建议使用更长的qq[...]vs"..."
  • 或者它只是纯粹的TIMTOWTDI?

perlop中没有提到这事.

TLP*_*TLP 6

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

"\"foo bar\""
Run Code Online (Sandbox Code Playgroud)

写作时看起来更好

qq("foo bar")
Run Code Online (Sandbox Code Playgroud)

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

perl -lwe "print qq($foo\n)"
Run Code Online (Sandbox Code Playgroud)

qq()运营商-像许多其它的Perl运营商如s///,qx()-也方便,因为你证明,因为它可以对任何字符作为分隔符它只是使用:

qq[this works]
qq|as does this|
qq#or this#
Run Code Online (Sandbox Code Playgroud)

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

qq!This is (not) "hard" to quote!
Run Code Online (Sandbox Code Playgroud)

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