如何评估正则表达式替换中的表达式

How to evaluate an expression in regular expressions' substitution

我需要在其循环中评估 ($i + 1)。或者用 return 值调用子程序。

  my $i = 0;

  my @tags = qw/ something anything everything /;

  until ( $i == scalar @tags ) {

     $tags[$i] =~ s/(.+)/ ($i + 1)/;
     $i++;
  }

我刚刚有了一个想法:我可以在替换之前对其求值并将其保存到一个变量中,然后我可以将其插入,但它看起来很不干净而且我不能在反向引用变量上使用它.

$tags[$i] =~ s/(.+)/" " . ($i + 1)/e;

末尾的/e修饰符表示对替换部分进行评估。参见 perldoc perlre。请注意,替换必须是有效的 Perl 表达式。

仅附加文本可能更容易:

$tags[$i] .= " " . ($i + 1 );