in reply to Respect case in substitution

I know that won't help you very much, but Perl 6 knows the :ii modifier, which can transport case information on a char by char basis, or it detects if the matched text has a "simple" case (like all upper, all lower, ucfirst, lcfirst, captilized), and applies that informaion to the substitution string.

You can implement something like that in perl 5, but not with such a nice syntax:

s/\b(find)\b/transport_case($1, 'repl')/eig; sub transport_case { ... }
The complexity of transport_case strongly depends on what you want to achieve. The first described behaviour is a simple matter of iterating over all the chars, and testing/applying the case.