<text>在 Perl 中 qq() 和 "<text>" 之间有区别吗?

  • 本文关键字:text 之间 有区别 qq Perl perl
  • 更新时间 :
  • 英文 :


在perl中,您可以使用qq(<text>)"<text>"来创建双引号文本。这两者有什么区别吗?

(q(<text>)'<text>'同样的问题)

No.

"<text>"qq"<text>"的缩写。

'<text>'q'<text>'的缩写。

说运营商

离开Perl程序,看看Perl如何解释您编写的程序。当您使用通用引号时,您会得到单引号和双引号:

$ perl -MO=Deparse -e '$s = q(abc)'
$s = 'abc';
-e syntax OK
$ perl -MO=Deparse -e '$s = qq/ab "c" d/'
$s = 'ab "c" d';
-e syntax OK
$ perl -MO=Deparse -e '$s = qq(abc$$)'
$s = "abc${$}";
-e syntax OK

除了使用这些来允许'和"为了出现在字符串中,我发现它们对于一行来说非常方便,这样'"就不会触发shell问题:

% perl -le "print qq(PID is $$)"

除了它们相同之外,还有一点是您可以使用q()qq()和不同的分隔符(就像使用许多Perl操作符一样)来简化引用。例如qq#The movie "Foo"#,q{Some other 'Foo'}。比较

"Bob said, "What's that?""      'Bob said, "What's that?"'   qq(Bob said, "What's that?")
"Kim whispers, "(...)""         qq|Kim whispers, "(...)"|
s/http://www.example.com//http://www.example.net//  # "leaning toothpick syndrome" (1)
s#http://www.example.com/#http://www.example.net/#        # fixed

(1):倾斜牙签综合征

最新更新