sub calc{ my ($part) = @_; while($part =~ s!(\d+)\s*([\*\/])\s*(\d+)!subcalc($1,$2,$3)!eg){}; while($part =~ s!(\d+)\s*([\+\-])\s*(\d+)!subcalc($1,$2,$3)!eg){}; return $part; }