2013-09-24 107 views

回答

8

如果您確定該字符串不包含任何惡意代碼,您可以使用eval將其內容視爲Perl代碼。

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

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

print eval($string); 
#print 6  
10

最簡單的方式做到這一點:

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);