小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlでの文字列中のエスケープについていろいろ

Perlでの文字列は、大きく分けて2通りがあります。
それは、ダブルクォートで囲む文字列とシングルクォートで囲む文字列です。
クォート風演算子(qq//やq//)やヒアドキュメントも同様にこの2通りがあります。


ダブルクォート系文字列は、文字列中の変数が展開されます。
シングルクォート系文字列は、文字列中の変数が展開されません。


ダブルクォート系文字列は、エスケープシーケンス(\nや\tや\x1bなど)を記述することが出来ます。
シングルクォート系文字列は、エスケープシーケンスを記述すると単なる文字列になります。


ダブルクォート系文字列は、エスケープシーケンスをエスケープする時は、『\』をその前に記述します。
シングルクォート系文字列は、『'』や文字列の最後に『\』がある時は、それをエスケープする『\』をその前に記述します。

use strict;
use warnings;

my $data = "hirohito";

print "ABC $data DEF \\n \n", "\n";
print 'GHI $data JKL \\n \n', "\n";

print qq/ABC $data DEF \\n \n/, "\n";
print q/GHI $data JKL \\n \n/, "\n";

print <<"EOF";
ABC $data DEF \\n \n
EOF

print <<'EOF';
GHI $data JKL \\n \n
EOF

print 'AAA\'BBB\\', "\n";

特にシングルクォート文字列でのエスケープは、文字列中の『'』や文字列最後の『\』のみで、これ以外はないはず・・・。