- 締切済み
プログラム/perl カウントについて
プログラム初心者です. 現在,プログラムの書き換えを行っているところです. (言語はperlです 以下のプログラムのnextの前に, 「$bbをカウントし, $bbが2回出てきたらlast」 というプログラムを書きたいと思っています. ------------------------ if($honbun =~ /$boundary/) { $bb++; if($bb >=2) { last; } next; } ---------------- カウントする変数を使うべきだと思うのですが,どのようにすればいいでしょうか; 初心者質問で申し訳ないです.
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
ああそうだ, 「疑問点を整理する」のはいいんだけど, たぶん あなたの本当の目的はなんなのか を明らかにした方がいいと思う. 「全体の中でここがどのような位置づけにあるのか」がわかると読みやすいし, ひょっとすると「この部分はそもそも不要」ってことになるかもしれない. 逆に言うと, 「全体の中の位置づけ」が分からないと小手先の修正だけになるおそれもあります. あと #2 にも書いたんだけど, 「文章とプログラムの整合性」はきちんととってください. 今の場合だと「$bb をカウントし」って書いてあるから「$bb の出現回数をカウントする」というに読める (#1 の補足の「$bbに関しては全て拾ってくる」も同様) んだけど, プログラムは「$boundary を探す」という動作になってる. つまり文章とプログラムがかみ合っていないので, 「書き換える」より前に「あなたが何を意図しているのか」を探らなきゃならなくなっちゃってます. ということも含めて「何を目的としてどのように書いていて, どこでどのように困っているのか」を明確にした方がよいと思いますよ.
- Tacosan
- ベストアンサー率23% (3656/15482)
うん, 何を聞きたいのかさっぱりわからん. 質問文には「$bb をカウント」とあるのにプログラムでは $boundary を調べてるし, そうかと思うと #1 への補足では「$bbに関しては全て拾ってくる」とあってやっぱり $bb を探すように読める. 多分, 疑問点を整理して質問し直した方がいいと思う. このままだと「労多くして功少なし」じゃないかな. あと, 「初心者」っていちいち書かれるのは目障り. そんなこと書いても問題の解決には何ら意味を持たないよ.
- kmee
- ベストアンサー率55% (1857/3366)
> 「$bbをカウントし, $bbが2回出てきたらlast」 検索しているのは「$boundary」ですよね? これは$honbun中に2回以上出てくるものなのでしょうか? ・この部分がループの中の一部 ・$honbun中に$boundaryは存在してたとしても1回だけ だとすると、$bbの初期化が間違った位置でなければ、期待したものになっていると思いますが。 「カウントする変数」とはなにを意図してますか?
補足
> 検索しているのは「$boundary」ですよね? > これは$honbun中に2回以上出てくるものなのでしょうか? はい,稀に2回以上出てくるデータもあるので,対策用に書き換えるところです. > ・この部分がループの中の一部 if の中に if が入っている状態です. > ・$honbun中に$boundaryは存在してたとしても1回だけ だとすると、$bbの初期化が間違った位置でなければ、期待したものになっていると思いますが。 現状では $bbに関しては全て拾ってくるようなプログラムになっています. 複数の処理はできないので, $bbは2カウントまでにしようと決めました.そのために追加した部分が以下の部分です. if($bb >=2) { last; } よろしくお願いします><
お礼
指摘ありがとうございます. 疑問点を整理したほうがいいですね... どうしたら伝わるのか,同系統の質問をされてる方の質問を見て出直します.