「Perlで関数呼び出しする正規表現」を勝手に添削
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/[.-]([a-z])/uc $1/eg'
で良いと思います。
% echo user.home-info.postal.name | perl -pe 'sub convert{uc $1;};s/\.([a-z])/&convert($1)/eg;s/-([a-z])/&convert($1)/eg;' userHomeInfoPostalName % echo user.home-info.postal.name | perl -pe 's/[.-]([a-z])/uc $1/eg' userHomeInfoPostalName