価格の表示など、3桁毎に数字を区切りたいことがある。このような場合、どういった処理を書けば良いのだろうか? 次のような commify 関数を自分のライブラリに準備しておくとかなり重宝する。
サンプル
;# ;#カンマ区切り ;# print commify(1234567890); #----------------------------------------------# #■数字を三桁ずつカンマで区切る #----------------------------------------------# sub commify{ my $num = shift; my $i = ''; my $j = ''; if ($num =~ /^[-+]?\d\d\d\d+/g) { for ($i = pos($num) - 3, $j = $num =~ /^[-+]/; $i > $j; $i -= 3) { substr($num, $i, 0) = ','; } } return($num); }
実行結果
1,234,567,890