$re =~ s/^\^//;
$re =~ s/\$$//;
my $final = '/';
- my @captures = @$captures;
+ my @captures = map { s/([^A-Za-z0-9\-_.!~*'()])/$URI::Escape::escapes{$1}/go; $_; } @$captures;
while (my ($front, $rest) = split(/\(/, $re, 2)) {
+ last unless defined $rest;
($rest, $re) =
Text::Balanced::extract_bracketed("(${rest}", '(');
next REGEX unless @captures;
$final .= $front.shift(@captures);
}
+ $final .= $re;
next REGEX if @captures;
return $final;
}