クォート演算子 qq//

"STRING" と同等の文字列定義

構文

解説

クォート演算子 qq// は、ダブルクォーテーションを使わずに文字列を定義することができます。 クォート演算子 qq// による文字列定義は、ダブルクォーテーションにる定義と同等です。

qq// を使うことで、文字列の中にダブルクォーテーションが含まれていても、 バックスラッシュを使ってエスケープする必要はありません。

print qq(Say "Hello");    # Say "Hello"

クォート演算子による文字列定義では、文字列を / で囲む必要はなく、他の記号を使うことができます。 定義する文字列に含まれない記号を使うと良いでしょう。

my $str1 = qq(2023/04/02);
my $str2 = qq|Windows (64-bit)|;
my $str3 = qq!one | two | three!;
my $str4 = qq<Go!>;

良くある間違いとして、次のように記述してしまうことがあります。

print q("Hello");    # Hello ではなく"Hello" と出力される

これはダブルクォーテーションも文字列に含まれてしまいます。 もちろん、それが意図的なら問題ありませんが、意外に間違えてしまうので注意してください。