文字列から最後の文字を削除する
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" が取り除かれている)