何気なくつぶやいたらgfxさんに教えてもらったのでメモを残しておく。
もともとLog::Minimalのコードを見てたときにタブやLF、CRをエスケープシークエンス使わずに16進コード使ってるんだろうってふと疑問に思ったのが始まりでした。 lib/Log/Minimal.pm - metacpan.org
昔にどっか聞いて忘れてしまっただけかもですが、
— masasuzu 🍶🐫 (@masasuz) February 1, 2019
perlで改行をエスケープするときに下記みたいに¥n¥r使わずに16進文字コード使う理由ってなんでしたっけ。
s/¥x0a/¥¥n/g
s/¥x0d/¥¥r/g
\r\n はプラットフォーム依存の値なので、ポータブルにするには16進数じゃないといけないんです。実際には \n != \x0a なプラットフォームはmac OS 9.x とかしかないので、「仕様に忠実なコードを書くか、現実に動けば問題ないか」というポリシーの違いですかね。
— FUJI Goro (@__gfx__) February 1, 2019
ドキュメント的にはこのあたりです。 https://t.co/nxsrG0FOJX
— FUJI Goro (@__gfx__) February 1, 2019
> Perl uses \n to represent the "logical" newline, where what is logical may depend on the platform in use.
なるほど。perlで¥nがいわゆるLFだけ表現するとは限らないと。
— masasuzu 🍶🐫 (@masasuz) February 1, 2019
16進数使うのが良さそうですね。
ありがとうございます。
ということで、これからは16進コード使うようにする。