RULES a \d+(\s*[+*-/]\s*\d+)+=e=> eval($&) ENDRULES while(<>){print a($_)} =head1 number parentesis (put a number in each "(" ou ")" Where =e=> ... means: substitute by the result of evar of ...