chomp関数:文字列の末尾の改行文字を削除する

Perl で用意されている組み込み関数の一つである chomp 関数の使い方です。 chomp 関数は対象の文字列の末尾の改行文字を削除します。

(Last modified: )

chomp関数の書式と基本的な使い方

chomp 関数は次のように定義されています。

chomp
chomp([VARIABLE])
対象の文字列から末尾の改行文字を削除します。

パラメータ:
  VARIABLE  対象の文字列
戻り値:
  削除された末尾の文字数

省略可能な 1 番目の引数には対象となる文字列を指定します。省略された場合は変数 $_ が使用されます。関数が呼び出されると対象の文字列の末尾が改行文字の場合に改行文字が削除されます。戻り値には削除された文字数が返されます。

対象となる文字列そのものに対して削除を行うため、引数には文字列が含まれる変数を指定する必要があります。

chomp 関数は chop 関数と似ていますが改行文字だけを削除したい場合に使用します。削除される改行文字は特別な変数 $/ に設定されている値によって異なります。

具体的には次のように記述します。

my $src1 = "abc\n";
chomp($src1);

my $src2 = "abc";
chomp($src2);

この場合、変数 $str1 に格納されていた "abc\n" から末尾の "\n" が削除され変数 $str1 に "abc"が格納されます。また変数 $str2 に格納されている文字列には改行文字が含まれませんので、 chomp 関数を呼び出しても変数 $str2 に格納されている値に変化はありません。

※末尾の文字を無条件で削除する場合は「chop関数」を使用して下さい。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my $src;
my $num;

$src = "Hello\n";
print "削除前 : $src\n";
$num = chomp($src);
print "削除後 : $src\n";
print "削除された文字数 : $num\n";

print "----\n";

$src = "東京都港区";
print "削除前 : $src\n";
$num = chomp($src);
print "削除後 : $src\n";
print "削除された文字 : $num\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

chomp関数:文字列の末尾の改行文字を削除する(1)

文字列の末尾に改行文字がある場合に、末尾の改行文字を削除した新しい文字列を取得しました。末尾に改行文字がない場合は何もしません。

-- --

Perl で用意されている組み込み関数の一つである chomp 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。