読者です 読者をやめる 読者になる 読者になる

Perlのsingle-quotedなヒアドキュメントはsingle-quotedな文字列とはちょっと違う。

ちょっとはまったので。

print '\ \\', "\n";
# \ \

print <<'HERE';
\ \\
HERE
# \ \\

ヒアドキュメントでは、引用符自体のエスケープが必要なくなる。double-quotedなヒアドキュメントの場合、ほかにエスケープしなければならない文字が残るため\自体もエスケープが必要になるが、single-quotedなヒアドキュメントの場合、エスケープしなければならない文字は存在しない*1ため、\自体のエスケープも不要なのだろう。

こういう論理的な覚え方をしていればまた忘れてはまることもないはず。

*1:デリミタは当然エスケープできないし。