EUC-JP交じりの文章を1文字づつsplitする

日本語の文章を、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領域と呼ばれる)
を表す正規表現です。