while () { /\./ ? s/(?<=\d)(?=(\d{3})+(?:\.))/,/g : s/(?<=\d)(?=(\d{3})+(?!\d))/,/g; print "$_"; } __DATA__ 123 1234 12345 123446 1234567 +12345678.12 -123456789.12345678