perl で windows の改行文字を chomp する

Jul 10, 2021 10:17 · 334 words · 1 minute read

ファイル内の改行コードはOSごとに異なる。

  • Windows: CR+LF (\r+\n)
  • Linux(UNIX系OS): LF (\n)
  • MacOS X: LF (\n)

Linux <> MacOS で作業をしているわりには perl の chomp で問題がないが、 MacOS 上で windows のエクセルで生成された csv を扱い場合などはこのあたりを気にする必要がある。

chomp は改行の区切り文字を格納する特殊文字 $/ を参照するので、これに Windows 向けの改行文字を入れてあげればよい。

こんな感じ

local $/="\r\n";
while (<>) {
    chomp;
    ...

だいたいのページだと s/\r\n// の例で書いてあるが、$/ と chomp を使うと変更箇所がちらばらなくていいんじゃないかなと思う。perlの仕様を知らないと直観的ではないのだが自分用のスクリプトなら問題ないだろう。

参考

tweet Share