第21回 q と qq

シングルクォートで囲った場合は、文字列の中にシングルクォートが現れたらエラーになってしまう。
ダブルクォートで囲った場合は、文字列の中にダブルクォートが現れたら同じくエラーになってしまう。

そこで、

q

qq

qで囲うのは、シングルクォートで囲う別の姿

use strict;

print 'こんにちは\n';
print q{こんばんは\n};

結果:

こんにちは\nこんばんは\n

qqで囲うのは、ダブルクォートで囲う別の姿

use strict;

print "こんにちは\n";
print qq{こんばんは\n};

結果:

こんにちは
こんばんは

q{ { } , qq{ { }という形になったら、エラーなのでは?

print qq{こん{ばんは};
Can't find string terminator "}" anywhere before EOF at bingo.pl line 1.

エラーです。

実は....


例:

print qq<こん{ばんは\n>;
print qq(こん<ば>んは\n);

結果:

こん{ばんは
こん<ば>んは

よって、自分が扱いたい文字列の中に含まれていない記号を選択すればよい(※ ソースの読みやすさも考慮して)

覚え方

q は、 qが1個である。 つまり、シングルだ。 なのでシングルクォートの変わりになる。

qq は、 qが2個である。 つまり、ダブルだ。 なのでダブルクォートの変わりになる。