文字コードが utf8 の場合の Perl における文字数のカウント

文字コードが utf8 の場合、
日本語は 3 バイトになるため、
カウントしたい文字列をいったんデコードしてから文字数をカウントする必要があります。
その際、正確に文字数をカウントするために改行は削除しておくこと。

以下のようにして Encode モジュールを使用し、デコードしてから文字数のカウントを行います。

#!/usr/bin/perl -w

use Encode qw(decode);

my $text = 'こんにちは世界';

my $c_text = $text;
$c_text =~ s/\r//sig;
$c_text =~ s/\n//sig;
my $length = length(decode('utf-8', $c_text));

print 'length => ' . $length;

--------------------------------------
出力結果は以下のようになります。

length => 7