Возможно ли, чтобы Perl сохранял регистр в подстановке?
Я хочу заменить строку на другой - уловка в том, что мне нужен оригинальный случай, чтобы он оставался таким, каким он есть. Если строка начиналась с верхнего регистра, я хочу, чтобы замена начиналась с верхнего регистра. Поэтому я попробовал это:
$text =~s/\b(Abc|abc)\b/(Xyz|xyz)/g;
Но он заменяет каждое совпадение "Abc" или "abc" на "(Xyz | xyz)". Так что я предполагаю, что невозможно использовать трубу внутри замены?
Я также пробовал следующее, которое отлично работает:
$text =~s/\bAbc\b/Xyz/g;
$text =~s/\babc\b/abc/g;
... но я действительно хочу, чтобы я мог сделать это только с одной строкой кода. Если в одном регулярном выражении невозможно иметь две замены, есть ли другой способ сохранить исходный случай строки?