String 获取perl字符串计算结果

String 获取perl字符串计算结果,string,perl,String,Perl,如果一个字符串表示如下 $str=“5+2-1”; 我想从那个字符串中得到计算结果。 如何将其转换为标量来计算? 谢谢。如果您确定该字符串不包含任何恶意代码,可以使用eval将其内容视为perl代码 #!/usr/bin/perl use strict; use warnings; my $string = "5+2-1"; print eval($string); #print 6 最简单的方法是: print eval('5+2-1'); 但这并不安全: print eval

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

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

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

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

print eval($string);
#print 6    

最简单的方法是:

print eval('5+2-1');
但这并不安全:

print eval('print "You are hacked"');
您需要在
eval
it之前检查字符串。 您还可以使用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 );