如果一个字符串表示如下 $str = "5+2-1"; 我想从那个字符串中得到计算结果。如何转换为标量来计算它?谢谢。
问问题
1299 次
2 回答
13
最简单的方法是:
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 );
于 2013-09-24T07:49:03.147 回答
9
如果您确定字符串不包含任何恶意代码,您可以使用 eval 将其内容视为 perl 代码。
#!/usr/bin/perl
use strict;
use warnings;
my $string = "5+2-1";
print eval($string);
#print 6
于 2013-09-24T07:25:43.077 回答