在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):倾斜牙签综合征