文字列長の取得
lengthを使います。
$hoge = 'abcdefg'; $hoge_len = length $hoge; print $hoge_len, "\n";日本語を含む文字列の文字数を取得する場合には以下の関数を使います。
※以下はPerl 5.6までの古い書き方です。5.8以降はEncode::decodeしてlengthを使ってください。
# EUC用文字数取得関数
sub length_euc {
my $str = shift;
my $cnt = 0;
while ($str =~ m/
[\x00-\x7F]|
[\x8E\xA1-\xFE][\xA1-\xFE]|
\x8F[\xA1-\xFE][\xA1-\xFE]
/gx
){
$cnt++;
}
return $cnt;
}
# Shift JIS用文字数取得関数
sub length_sjis {
my $str = shift;
my $cnt = 0;
while( $str =~ m/
[\x00-\x7F\xA1-\xDF]|
[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]
/gx
) {
$cnt++;
}
return $cnt;
}
関連項目
・length関数・utf8フラグ付き文字列の大きさ
・部分文字列の取得
