• ベストアンサー

引数をカンマ句切りしたデータにしたいです。

お世話になります。 Perlのプログラムの中で、 引数の数値を、後ろから3桁毎にカンマ句切りして 表示したいと思っています。 (例) 10000000 → 10,000,000 カンマを入れる方法を教えてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

$numに数値が入っているとして・・・ while($num =~ s/(.*\d)(\d\d\d)/$1,$2/){;} で行けたはず・・・一応Cygwin上のPerlで確認した所動くようです。

pion16
質問者

お礼

無事に動作いたしました。 ありがとうございました。

その他の回答 (1)

  • oodaiko
  • ベストアンサー率67% (126/186)
回答No.1

pion16 さんこんばんは。こんな感じのサブルーチンで いかがでしょうか。 一応テスト済みなので試してみて下さい。 ******************************************* #!/usr/local/bin/perl $number=<> ; &thousands; print "commanumber=$commanumber\n"; #以下が主要部分 sub thousands { $commanumber=""; chomp($number); # 改行コードを切り落とす # 3桁ごとにカンマを入れていく while(){ # 残りが3桁以下ならおしまい if(length($number)<=3){ $commanumber="$number" . "$commanumber" ; last; } $numberlength=length($number); # データの桁数を調べる $pnumber=substr($number,-3); # 下から3桁とりだし $commanumber="," . "$pnumber" . "$commanumber"; # カンマをつけて出力文字列につなぐ $number=substr($number,0,$numberlength - 3); # 下3桁を取り除いて新たなデータとする next; } } exit;

pion16
質問者

お礼

出来ました。 詳細のわかりやすいご説明ありがとうございます。

関連するQ&A