What did you do, golf mine? :)
I was unaware at that property of ^, very nice... in fact, I'm not ever sure why that works. Time for me to hit perlman:perlop.
Ok, its like this: ^ is XOR. That means the bit returns true if and only if one of the 2 bits is true:
lc $new # lowercase the replacement
^ $1 # XOR with $1 - will increase the values by
# the corresponding ascii value of each character
# of $1
^ lc $1 # XOR with lc $1 - basically, it will subract the
# ascii values of lowercase $1 - if the values were
# lowercase to begin with, the resulting sum is 0,
# otherwise, the increase is enough to uppercase
# the corresponding character
In short - an incredibly concise way of doing it. ++!