• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl 条件一致なし 合計値 0表示)

Perl条件一致なし 合計値0表示

このQ&Aのポイント
  • Perlプログラムで条件に一致した値を合計する際、条件に一致しない場合には0を表示する方法を知りたいです。
  • 現在、Perlプログラムで条件に一致した値を合計するプログラムを作成していますが、条件に一致しない場合には空欄になってしまい、次の行が表示されません。そこで、条件に一致しない場合にも0を表示する方法を教えてください。
  • Perlのプログラムで条件に一致する値を合計する処理を記述していますが、条件に一致しない場合には何も表示されません。どのようにすれば条件に一致しない場合にも0を表示できるでしょうか。

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

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.2

「次に書いている行」というのは、 print "$total3[1]"; print "$total4[1]"; ですよね? 頭のほうで次の2行を足しておけば、とりあえず動くんじゃないかなとは思います。 @total3 = (0, 0, 0, 0, 0, 0); @total4 = (0, 0, 0, 0, 0, 0); <おまけ> $kensoukenや$tantou1の代入箇所等読み取れないので、全部コード貼ったほうが良いのではないかなと思いました。 各カラムの中に「,」を含むことのないCSV形式なのでしょうか? 入力データ次第でしょうが、CSVモジュールを使ったほうが安全な気もします。 if文の内容に重複があるので、まとめた方が読みやすいかもしれません。 @total3, @total4を配列にしているのは何か理由があるのでしょうか? ざっとみるかぎり、先頭から2番目の要素しか使っていないようにも思えます。 というあたりを、CSVモジュール以外個人的にまとめ直してみました。 (入力は標準入力に変えてあります。) http://ideone.com/cB4qR

spider32
質問者

お礼

ありがとうございます。なんとか変数初期化できました。 @tantou は別ファイルに保存している、担当者コードを代入したものです。 担当者コードを別ファイルから読み込み、マッチしたら合計するというものです。 担当者ごとに合計したいため、上記のプログラムを何回も繋げて、@tantou1 @tantou2を計算させています。 コードは今貼れないので、また貼ります。

spider32
質問者

補足

すいません。 プログラムの先に、 $per = $total3[1]/$total4[1]*100; $per2 = sprintf("%.1f",$per); としており、これが表示されない原因でした。 unnless ($total4[1]<=0){ $per = $total3[1]/$total4[1]*100; $per2 = sprintf("%.1f",$per); }else{$per2="0%"}としたら、表示されました。 ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

ちなみに @column[33] <=0 とか $total3[$loop] += @column[32]; とかは意味をきちんと理解して使っていますか?

spider32
質問者

お礼

いいえ。ネットで調べて、合計値を取得する位にしか認識がありません。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

見た感じ、加算してるだけなので、 $total3[1] = 0; $total4[1] = 0; ――と初期化しておけばよいかと。

spider32
質問者

補足

入れてみましたが、どうもうまくいきません。 条件に一致する場合は、合計を出すようにしたいのですが・・