String 获取perl字符串计算结果
如果一个字符串表示如下 $str=“5+2-1”; 我想从那个字符串中得到计算结果。 如何将其转换为标量来计算?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
谢谢。如果您确定该字符串不包含任何恶意代码,可以使用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 );