chomp関数

広告

「chomp」関数は対象の文字列の末尾の改行文字を削除します。

対象の文字列から末尾の改行文字を削除します。

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

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

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

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

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

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

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

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

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

サンプルプログラム

では簡単なプログラムで確認して見ます。

test10-1.pl

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

my $src1 = "abc¥n";
my $src2 = "def";
my $src3 = "ghi¥n";
print "削除前 : (start)$src1,$src2,$src3(end)¥n";

my $num1 = chomp($src1);
my $num2 = chomp($src2);
my $num3 = chomp($src3);
print "削除後 : (start)$src1,$src2,$src3(end)¥n";
print "削除された文字数 : $num1,$num2,$num3¥n";

上記を「test10-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。

chomp関数

( Written by Tatsuo Ikura )