Простой ответ - убежать от парена. my $a = '5 \)';
В вашем случае, как упоминается в вашем посте, вы не тот, кто создает строки, поэтому буквально экранировать их не вариант.
Может быть проще обернуть переменную, которая интерполируется регулярным выражением внутри \ Q ... \ E.
$s =~ s/\Q$a\E/$b/g;
Функция quotemeta()
также может быть полезна для вас, в зависимости от того, как ваш код учтен. С этой опцией вы передадите $ a через quotemeta перед интерполяцией в регулярное выражение. \ Q ... \ E, вероятно, проще в этой ситуации, но если ваш код упрощен с использованием взамен quotemeta, он для вас.