in reply to case insensitive replace, but maintains capitalization

Almost, you can do it with the substitution operator
$_ = 'blah Blah'; s/blah Blah/dog Dog/; print $_; __END__ dog Dog
perlintro, perlretut