Como substituir uma string e preservar sua letra maiúscula / minúscula

Eu quero substituir uma string por outra em Perl; ambos são do mesmo comprimento. Quero substituir todas as ocorrências da sequência (sem distinção entre maiúsculas e minúsculas), mas quero que o caso da letra seja preservado. Portanto, se a primeira letra for maiúscula, a primeira letra após a substituição também será maiúscula.

Por exemplo, se eu quiser substituir "foo" por "bar", quero que

foo ==> bar
Foo ==> Bar
FOO ==> BAR

Existe uma maneira simples de fazer isso no Perl?

questionAnswers(10)

yourAnswerToTheQuestion