文字列中の全角英数字を半角英数字に置き換えるには?

[上に] [前に] [次に]
佐藤 1999/11/19(金) 08:59:41
こんにちわ、度々お世話になっております。

今回の質問なのですが、文字列中の全角英数字を半角英数字に置き換える方法を知りたいのです。
正確には自分で考えた方法だとうまく行かない、なのですが・・・
そのうまく行かないソースが以下です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
$str = "123ABCabc";

@dbc = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
@sbc = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");

for ($i = 0; $i <= $#dbc; $i++) {
$str =~ s/$dbc[$i]/$sbc[$i]/g;
}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
このスクリプトに通す文字列(上なら$str)に「魔法」や「高等」といった漢字が入っていると、文字化けしてしまうのです。(それ以外にも化ける文字はあるようです)
@dbcの各要素にquotemetaをかけても駄目なようです。
ちなみに、Shift-JISです。

どなたか、解決策があればぜひご教授願います。
よろしくお願いします。

佐藤 1999/11/19(金) 09:04:49
[[解決]]
過去ログに記事が有りました。
お騒がせしました。
(過去ログを検索するキーワードが悪かったらしいです)

[上に] [前に] [次に]