nkfを使うと勝手に変換してくれることに気付いた。変換したくない場合は-xをつける。
- man nkf
-x
通常おこなわれる、いわゆる半角カナ (JIS X 0201 片仮名) からいわゆる全角カナ (JIS X 0208 片仮名) への変換を行わず、半角カナを保存する。入力は、Shift_JIS の 1byte カナ、SO/SI、ESC-(-I, SSO を受け付ける。出力は、日本語 EUC 中では SSO、JIS コード中では ESC-(-I をデフォルトで用いる。
Unicode::Japanese
use Unicode::Japanese; my $file = shift; open my $fh, '<', $file or die "$!"; while (my $line = <$fh>) { print Unicode::Japanese->new($line)->h2z->get; }