#! /usr/local/bin/perl -c exit; ## euc-jp の $kata のカタカナ部分をひらがなに直したものを返す。 ## jcode とかの高機能ツールを使うまでもなさそうな場面を想定 :D ## カタカナの1バイト目の文字コードは本当に 165 だけなのかも不明 (^_^; ## ‥‥だってコード表調べるのも面倒くさかったから‥ sub kata2hira { local($kata) = @_; local($hira); while(0 < length($kata)) { local($car, $cdr) = ( substr($kata, 0, 1), substr($kata, 1) ); local($cac) = unpack("C", $car); if($cac == 165) { local($cad) = unpack("C", substr($cdr,0,1)); $cac -= 1; $hira .= pack("CC", ($cac, $cad)); $kata = substr($cdr, 1); } elsif(127 < $cac) { $hira .= $car . substr($cdr, 0, 1); $kata = substr($cdr, 1); } else { $hira .= $car; $kata = $cdr; } } return $hira; }