日本語の文章を、1文字づつばらそうとして、 print join(":", split(//, $jtext)); などとすると、1バイトづつばらしてしまいうまくいきません。 (jperlではこれでうまく行きますが) こういう場合は、 $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; sub jsplit{$_[0] =~ m/($twoBytes|$threeBytes|.|\n)/og} のような関数を作ってやり、 print join(":", jsplit($jtext)); のように使うとうまくいきます。 $twoBytesは、EUC-JP2バイト文字(いわゆる半角カナ含む)を表す 正規表現で、$threeBytesは、EUC-JP3バイト文字(G3領域と呼ばれる) を表す正規表現です。