Vous pouvez utiliser le modificateur /e
pour transformer la partie de substitution du s///
dans une expression Perl qui est évaluée une fois par substitution. Parce que c'est une expression complète, vous devez mettre le reste de votre chaîne entre guillemets. J'ai utilisé des guillemets simples et doubles pour la partie sans et avec interpolation respectivement.
my $html = "<p>foo</p><p>bar</p>";
my $count = 0;
$html =~ s[<p>(.+?)</p>]['<li value="'.++$count.qq{">$1</li>}]gise;
print $html;
__END__
<li value="1">foo</li><li value="2">bar</li>
'$ html = ~ de [
(. +?)
] [ '