在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一样)?
发布于 2012-03-28 07:45:23
print eval "\"$cal\"","\n";外部双引号用于eval "",内部转义引号用于print "$1 $2","\n";内部插值
或者,您可以像下面的print eval "\"$cal\n\"";那样组合打印片段
发布于 2012-03-28 07:13:12
听起来你想定义一个模式,你的匹配项将被插入其中?你可以用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);
}https://stackoverflow.com/questions/9899018
复制相似问题