while($part =~ s!([\d.]+)\s*([\*\/])\s*([\d.]+)!subcalc($1,$2,$3)!eg){}; while($part =~ s!([\d.]+)\s*([\+\-])\s*([\d.]+)!subcalc($1,$2,$3)!eg){};