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";
特にシングルクォート文字列でのエスケープは、文字列中の『'』や文字列最後の『\』のみで、これ以外はないはず・・・。