我想使用Config :: INifiles从配置文件中读取匹配的模式。 即一切都包含在变量中。
匹配工作正常:
my $user = "CN=vpn,ou=test";
my $pattern = 'CN=(.*),ou=test';
if ($user =~ /$pattern/) {
print "match\n";
print $1;
};
但现在我还想使用$1
访问第一场比赛,我也想从配置文件中读取。
有没有办法实现这个目标?
my $user = "CN=vpn,ou=test";
my $pattern = 'CN=(.*),ou=test';
my $m = "\\$1";
if ($user =~ /$pattern/) {
print "match\n";
print $m;
};
答案 0 :(得分:2)
这可能会对你有所帮助:
my $user = 'CN=vpn,ou=test';
my $pattern = 'CN=(.*),ou=test';
my $m = 1; # number of capturing group
if (my @c = $user =~ /$pattern/) {
print "match\n";
print $c[$m-1];
};
答案 1 :(得分:0)
您可以将$m
视为要执行的Perl代码,也可以将其视为模板。后者是更好的方法。您可以使用String :: Substitution' interpolate_match_vars
作为模板处理器。
use String::Substitution qw( interpolate_match_vars last_match_vars );
my $interpolated = interpolate_match_vars($m, last_match_vars());