Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発
  1. Perl
  2. 標準関数
  3. here

chomp関数 - 改行を削除する

chomp関数を使用すると、改行を削除することができます。

# 末尾の改行を削除
chomp $line;

OSに依存しないで改行を削除する

chompに関して一つ注意点があります。chompは環境に依存するということです。たとえばWindowsで実行した場合は末尾の「\x0D\x0A」あるいは「\x0A」を取り除きますが、Unix系OSで実行した場合は「\x0A」を取り除きます。\x0Dはキャリッジリターンを、\x0Aはラインフィードを表す特殊文字です。Windowsでは改行文字は「\x0D\x0A」で表されれ、Unixでは「\x0A」で表されます。

このような理由でWindows上で保存したスクリプトと読み込んだテキストファイルを、そのままUnix上に移動させた場合に、正しく改行が取り除かれないということが発生します。環境に依存しないで改行を取り除きたい場合は正規表現を使って次のようにします。

# 環境に依存しないで末尾の改行を削除
$string =~ s/\x0D?\x0A?$//;

サンプル

chomp関数を使ったサンプルです。

use strict;
use warnings;

my $message = "I like a cake.\n";

# 行末の改行を削除する
chomp($message);
print $message;