正規表現だけで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));