我正在使用 eval 来处理动态替换正则表达式。
左侧的值捕获 ($1) 未在正则表达式的右侧使用。
#!/usr/bin/perl
use strict;
my $string = "test-txt";
# Attempt 1
my $regexp_m = '-(\S+)$';
my $regexp_r = '.$1';
my $string2 = eval{ $string =~ s/$regexp_m/$regexp_r/; return $string; };
# Attempt 2
my $regexp = 's/(\S+)$/.$1/';
my $string3 = eval{ $string =~ $regexp; return $string; return $string; };
print "Attempt 1: $string2\n";
print "Attempt 2: $string3\n";
exit;
输出:
尝试 1:测试。$1
尝试 2:测试。$1