sub e1 { shift() * 2; } sub e2 { "(".shift().",".shift().")"; } $a = "12.2424.4812367"; $a =~ s/((?:\d+(?:\.\d+)?))((??{e1($+)}))/e2($1, $2)/ge; print $a;