如何将变量插值到替换的正则表达式部分中的正则表达式模式中



我必须在这里更改什么才能使其工作?

my $str = "start middle end";
my $regex = / start ( .+ ) end /;
$str.=subst( / <$regex> /, { $0 } ); # dies: Use of Nil in string context
say "[$str]";

问题是通过<$regex>语法将一个正则表达式插入另一个正则表达式不会在 match 变量中安装结果。有两种方法可以解决此问题:

  • 最简单的方法是直接在 subst 中使用正则表达式,即 $str .= subst($regex, { $0 });
  • 给插值正则表达式一个显式名称,并通过该名称访问结果,即 $str .= subst( / <foo=$regex> /, { $<foo>[0] });

这两个都应该可以正常工作。

最新更新