2013-09-24 3 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); 
Смежные вопросы