OSの影響を考えなくても改行コードを落とす方法〜正規表現
perlには、chopやらchompやら改行を落とす関数がありますが、これらは改行コードを落とすには不十分です。そこで、以下のように正規表現を使って書けば、どんな改行コードでも落とせちゃいます。
$line =~ s/[\r\n]+\z//;
そもそも、なんでchopやchompでは役不足なのか。
改行コードは、CR・LF(2バイト)と、CRのみ(1バイト)もしくはLFのみ(1バイト)の3種類があります。 ■chop 行末の1バイトを落とす。つまり、2バイトの改行コードは落とせません。 ■chomp chompを実行しているOSの改行コードを落とす。つまり、chompを実行しているOS以外の改行コードは、落とせません。→unixでchompが書かれているコードを実行すると、windowsの改行コードについては落としてくれません。
chopとchompは万能ではないのです。以上、先輩からの受け売りでした。