pnamazuのコードより。 コメントからすると、「Mastering Regular Expressions」(書籍?)からのものらしい。 $num =~ s<\G((?:^-)?\d{1,3})(?=(?:\d\d\d)+(?!\d))><$1,>g; プロファイルを取ってみると、大崎氏のPerlメモ方式に比べても1.5倍くらい早い様子。1000兆以下のランダムな数字で100万回実行した結果なので、1回あたり0.000007秒の差なんて現実にはどうでも良いけど。 Total Elapsed Time = -8.00031 Seconds User+System Time = 22.70667 Seconds Exclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 93.7 21.27 19.282 100000