正規表現だけで3桁ごとカンマで区切る

元ネタ: http://d.hatena.ne.jp/mzp/20090725/comma


数字が前にあって,3桁の数字のセットが最後まで続いている zero-width な文字をカンマに置換しています.

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

sub sep_by_comma($;$) {
  my ($n,$sep) = @_;
  $sep ||= ',';
  $n =~ s/(?<=\d)(?=(\d{3})+$)/$sep/g;
  $n;
}
print Dumper(sep_by_comma(1234));
print Dumper(sep_by_comma(12345, '_'));
print Dumper(sep_by_comma(-1234567));