• ベストアンサー

Perl 文字変換

Perlで全角英数字を半角英数字に変換させたいのですが、 Jcodeを使わずにできる方法を教えてほしいです。 例えば zenkaku→zenkaku のようにです。 $value=~ s/$a\xA3([\xB0-\xB9\xC1-\xDA\xE1-\xFA])$b/pack("C", ord($1) - 0x80)/oeg; こういうのを試してみたのですが、上手く行きませんでした・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • Wap58
  • ベストアンサー率33% (29/87)
回答No.1

これから逆引きしてください $moji =~ s/([^a-zA-Z0-9])/sprintf("%%%02lX",unpack("C",$1))/eg; $moji =~ s/%/\\x/g; print"$moji\n";

r-h-a-o
質問者

お礼

ありがとうございました

r-h-a-o
質問者

補足

コメントありがとうございます。 逆引きといのは・・・?;; とりあえずは $moji ="zenkaku"; として、ご掲示くださったコードをそのまま試してみたのですが、 結果は「00」でした。 逆引きというのが、わかっていませんorz

その他の回答 (1)

  • Wap58
  • ベストアンサー率33% (29/87)
回答No.2

逆引きは無視してください、さほど意味は無いです 質問者さんの環境でなぜ動かないのか分かんないよ? ひょっとしてunpackをpackに書き換えてませんか

r-h-a-o
質問者

お礼

ありがとうございました

r-h-a-o
質問者

補足

環境のせいなのですかね・・? $moji ="zennkaku"; $moji =~ s/%/\\x/g; $moji =~ s/([^a-zA-Z0-9])/sprintf("%%%02lX",unpack("C",$1))/eg; print"$moji\n"; ご掲示くださったコードをそのまましたのですが・・・

関連するQ&A