获取perl字符串计算结果

时间:2013-09-24 07:18:53

标签: string perl

如果一个字符串表示如下 $ str =“5 + 2-1”; 我想从该字符串中获取计算结果。 如何转换为标量来计算? 感谢。

2 个答案:

答案 0 :(得分:12)

最简单的方法:

print eval('5+2-1');

但这不安全:

print eval('print "You are hacked"');

您需要在eval之前检查字符串。 您也可以使用Math::Expression模块或cpan中的许多其他模块:

#!/usr/bin/perl

use strict;
use warnings;
use Math::Expression;

my $env = Math::Expression->new;

my $res = $env->Parse( '5+2-1' );

# my $res = $env->Parse( 'print you are hacked' );  # no math expression here

print $env->Eval( $res );

答案 1 :(得分:8)

如果您确定该字符串不包含任何恶意代码,您可以使用eval将其内容视为perl代码。

#!/usr/bin/perl
use strict;
use warnings;

my $string = "5+2-1";

print eval($string);
#print 6