Похоже, что единственный способ состоит в том, чтобы привести в порядок RE, заменить (-i) на (i-) и повторно заключить его в кавычки:
my $pat = qr/F(o+)B(a+)r/;
my $str = "$pat";
$str =~ s/(?<!\\)(\(\?\w*)-([^i:]*)i([^i:]*):/$1i-$2$3:/g;
$pati = qr/$str/;
ОБНОВЛЕНИЕ: perl 5.14 цитирует регулярные выражения в по-другому , поэтому мой пример должен выглядеть примерно так:
my $pat = qr/F(o+)B(a+)r/;
my $str = "$pat";
$str =~ s/(?<!\\)\(\?\^/(?^i/g;
$pati = qr/$str/;
Но у меня нет perl 5.14 под рукой и я не могу его протестировать.
UPD2: мне также не удалось проверить открывающуюся скобку.