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

时间:2018-06-17 16:37:19

标签: regex perl expression substitution

我需要在其周期中评估($i + 1)。或者调用带有返回值的子程序。

  my $i = 0;

  my @tags = qw/ something anything everything /;

  until ( $i == scalar @tags ) {

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

我刚才有一个想法:我可以在替换之前对其进行评估并将其保存到变量中,然后我可以插入变量,但它似乎非常不干净,我无法在反向引用变量上使用它。 / p>

1 个答案:

答案 0 :(得分:2)

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

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

附加文字可能更容易:

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