有关perl中的q,qq,qw,qr,qx

发布时间:2020-07-14编辑:脚本学堂
无意中看到的一篇关于perl特殊符号(q,qq,qw,qr,qx)的文章,贴出来,供大家学习参考。

无意中看到的一篇关于perl特殊符号(q,qq,qw,qr,qx)的文章,贴出来,供大家学习参考。

在perl语言中,几个特殊而常用的符号:  
q  是单引号 
qq 是双引号 
qw 单词列表引号 
qr 正则表达式引号 
qx 反引号 
其中qq,qw又较为常用。 
qq{foobar}的意思为意思为双引号字符串,可内插变量,相当于 "foobar" 
qw{foo bar}的意思为用空格分解字符串,得到列表,相当于如下语句 
split(' ','foo bar') 得到的结果是'foo','bar'  
 
q 和 qq 运算符的特点: 
q 和 qq 必须是一个标识符,而不是标识符的部分。例如: 
q (abc)  用 () 作为分界符 
q(abc)   用 () 作为分界符 
q xabcx  用 x 作为分界符 
都是合法的, 
而qxabcx 就会被当作是一个标识符来处理,有谁会想到 qxabcx 居然是一个 q 运算式呢? 
 
q 和 qq 后面的空格并不会影响语法,但是任何非空字符(不是空格、不是 TAB 字符、不是换行符)则会被当作界限符来使用。 
如果 q 和 qq 使用一些特殊的符号的时候, 
则必须配对。比如:< 只能和 >; 在一起用来当作界限符,而不能只用两个 < 作为q{}的妙用

在使用XPath获取xml node属性的时候,可以用之,比如想获取属性为zdd的node。xpath写法如下:
/html/body/dl[@class='commitlist']

因为这里面有@,所以不能用双引号,又由于有单引号,如果使用单引号则需要转义,像下面这样:
my $path = '/html/body/dl[@class='commitlist']';

看起来有点乱,用q{}解决就好多了:
my $path = q{/html/body/dl[@class='commitlist']}