nkfで半角カナを全角カナに変換

nkfを使うと勝手に変換してくれることに気付いた。変換したくない場合は-xをつける。

-x
通常おこなわれる、いわゆる半角カナ (JIS X 0201 片仮名) からいわゆる全角カナ (JIS X 0208 片仮名) への変換を行わず、半角カナを保存する。入力は、Shift_JIS の 1byte カナ、SO/SI、ESC-(-I, SSO を受け付ける。出力は、日本語 EUC 中では SSO、JIS コード中では ESC-(-I をデフォルトで用いる。

perlで半角カナを全角カナに変換

ついでなのでperl編も調べた。データの文字コードはutf8。

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;
}

Lingua::JA::Regular::Unicode

Unicode::Japanese でも同じようなことができるのですが、あれもちょろっと文字をイジりたいだけの場合には、巨大な気がしたので、新たにつくった次第です

ということらしい。

追記

あれ、半角が全角にならない。

print katakana_h2z($str);

だけじゃだめなのか?

追記2
use encoding 'utf8';

したらいけた。なぜだー。わからんー。
unicodeとかutf8フラグから逃げ回っていたツケだな。。。