>>457を見せました。色々文句言われました。"\d"は使わず"[0-9]"を使えとか…(--#;;

それは良いのですが
$string =~ s/(?<![0-9])([1-3][0-9]|4[0-7])(?![0-9])/"\xf4".chr(0x59 + ( $1 - 10 ))/sge;
$string =~ s/(?<![0-9])(4[89]|[5-9][0-9]|1[0-4][0-9])(?![0-9])/"\xf4".chr(0x80 + ( $1 - 48 ))/sge;
「この部分を47までと48以降で分けてサブルーチンにしろ。/gは遅くなるからダメ」と言われました。頭の中は?が飛んでます。


結局数字部分を見つけるのにはマッチングさせないといけないし、その部分を置き換えるのは置換しか無いのではないでしょうか?
どういう方法があるのか見当も付きません。
とりあえずperlクックブックを見て研究中です。