我可以在以下perl脚本中使用qq或q而不是qw吗?

时间:2016-12-26 17:39:26

标签: perl

以下脚本的输出将是当前日期,如" 12月26日星期一"

#!/usr/local/bin/perl
@months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
@days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
print "$mday $months[$mon] $days[$wday]\n";

2 个答案:

答案 0 :(得分:7)

没有

qw(a b c)('a', 'b', 'c')的快捷方式。它会返回列表(单词,w代表的单词)。

q()只是编写单引号的另一种方式,即q(a b c)'a b c'相同。它返回一个字符串而不插值。

qq()是一种编写双引号的方法,即qq(a b c)"a b c"相同。它返回带有插值的一个字符串

有关详细信息,请参阅http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators

当引用的字符串包含(大量)单引号和/或双引号并且您希望避免转义它们时,有时会使用q()qq()语法:

my $s1 = "This \"contains\" quotes - \" - and \"is\" no fun to \"type\"";

VS

my $s2 = qq(This also "contains" quotes - " - but "is" easier to "type"); 

答案 1 :(得分:2)

qw(...)

在功能上等同于

split(' ', q(...))

所以它显然不等于

q(...)

qq(...)