首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用perl计算变量中的内存组?

如何使用perl计算变量中的内存组?
EN

Stack Overflow用户
提问于 2012-03-28 07:09:52
回答 2查看 315关注 0票数 0

在perl脚本中,我希望在字符串变量中计算内存组特殊变量:

代码语言:javascript
复制
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一样)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-28 07:45:23

代码语言:javascript
复制
print eval "\"$cal\"","\n";

外部双引号用于eval "",内部转义引号用于print "$1 $2","\n";内部插值

或者,您可以像下面的print eval "\"$cal\n\"";那样组合打印片段

票数 0
EN

Stack Overflow用户

发布于 2012-03-28 07:13:12

听起来你想定义一个模式,你的匹配项将被插入其中?你可以用printf来做这件事,例如

代码语言:javascript
复制
my $string="3-4";
my $cal="%s %s\n";
if($string=~ '^(.)-(.)$'){
    printf($cal, $1, $2);
}

如果您只是想将所有匹配连接在一起,并且不知道可能有多少个,请尝试如下所示

代码语言:javascript
复制
my @matches=$string=~ '^(.)-(.)$';
if (scalar(@matches))
{
    print join(' ',@matches);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9899018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档