日本語を一文字ずつ分割する

そういや日本語文字列を分割する方法を知らなかった.

split //, $string

で文字ごとに分割できる.utf8フラグがついていないと1byteごと

#!/usr/bin/perl
use strict;
use warnings;
use Encode;

my $str = 'hogeはbarです';
utf8::decode($str);  # utfフラグをつける

my @chars = split //, $str;  # 一文字ずつに分割

foreach my $char ( @chars ) {
  utf8::encode($char);  # フラグ落とし
  print $char, "\n";
}

__END__
# 出力結果
h
o
g
e

b
a
r


ちなみにutf8フラグ付与,落としはこれでも良い

$ustr = decode_utf8($str);
$str = encode_utf8($ustr);