user.home-info.postal.nameというのを、userHomeInfoPostalNameという感じに一括変換したいなっと思い考える。 $ perl -pe 'sub convert{uc $1;};s/\.([a-z])/&convert($1)/eg;s/-([a-z])/&convert($1)/eg;' という感じでいいみたい。 プログラム中に2箇所出てくる正規表現は qr/\.([a-z])/ qr/-([a-z])/ と、ほとんど同じなので qr/[.-]([a-z])/ のようにまとめることができます。 文字クラス([...])の中では、"."は特別な意味を持たないのでエスケープは不要です。 また、eオプションは置換文字列部分に処理を直接書けるので、(何か事情があるのでなければ)サブルーチンを用意しなくても大丈夫です。 なので、 % perl -pe 's/