在perl脚本中,我想在字符串变量中评估内存组特殊变量:
my $string="3-4";
my $cal='first is $1;second is $2';
my $regex='^(.)-(.)$';
if($string=~ $regex){
print $cal;
#print "first is $1;second is $2";
}
我想打印:“第一个是3;第二个是4”(就像第二次打印一样)。
在我的示例中,只有2个特殊变量,但由于$cal
和$regex
存储在数据库中,因此无法事先确定特殊字符数。
如何评估字符串$cal
(与php中的eval一样)?
答案 0 :(得分:1)
听起来你想要定义一个插入比赛的模式?您可以使用printf,例如
my $string="3-4";
my $cal="%s %s\n";
if($string=~ '^(.)-(.)$'){
printf($cal, $1, $2);
}
如果您只想加入所有比赛,并且您不知道可能有多少比赛,请尝试这样的事情
my @matches=$string=~ '^(.)-(.)$';
if (scalar(@matches))
{
print join(' ',@matches);
}
答案 1 :(得分:0)
print eval "\"$cal\"","\n";
外部dblquotes用于eval“”,内部转义引号用于print "$1 $2","\n";
内插值
或者,您可以组合这样的打印片段print eval "\"$cal\n\"";