chop

文字列から最後の文字を削除する

構文

解説

chop は、文字列の最後の文字を取り除きます。 そして、引数から削除された文字を返します。 もし引数が指定されなければ、$_ の値を処理します。

my $str     = "Hello";
my $removed = chop $str;
print $removed;    # "o"
print $str;        # "Hell" (o が取り除かれている)

chop は、正規表現の s/.$//s より効率的です。 最後の文字を取り除きたいなら、正規表現を使わずに chop を使うと良いでしょう。

chop には連想配列を与えて、すべての値の末尾の文字を取り除くことができます。

my %data = (
    greeting1 => "Hello",
    greeting2 => "Hi",
    greeting3 => "Howdy"
);

my $removed = chop %data;
print $removed;            # "y"
print $data{greeting1};    # "Hell" ("o" が取り除かれている)

この場合、chop は最後に切り取った "Howdy" の最後の文字 "y" を返します。

chop には配列を与えることもできます。この場合、配列のすべての要素の末尾の文字を取り除きます。

my @list    = ( "Hello", "Hi", "Howdy" );
my $removed = chop @list;
print $removed;    # "y"
print $list[0];    # "Hell" ("o" が取り除かれている)

さらに、chop にはリストを与えることもできます。 しかし、リストを与える場合は chop に括弧が必要ですので注意してください。

my $str1    = "Hello";
my $str2    = "Hi";
my $str3    = "Howdy";
my $removed = chop( $str1, $str2, $str3 );
print $removed;    # "y"
print $str1;       # "Hell" ("o" が取り除かれている)