電子書籍の厳選無料作品が豊富!

プログラム初心者です.
現在,プログラムの書き換えを行っているところです. (言語はperlです

以下のプログラムのnextの前に,
「$bbをカウントし, $bbが2回出てきたらlast」 というプログラムを書きたいと思っています.
------------------------
if($honbun =~ /$boundary/)
{
$bb++;

        if($bb >=2)
        {
     last;
}
next;
}
----------------
カウントする変数を使うべきだと思うのですが,どのようにすればいいでしょうか;
初心者質問で申し訳ないです.

A 回答 (3件)

ああそうだ, 「疑問点を整理する」のはいいんだけど, たぶん


あなたの本当の目的はなんなのか
を明らかにした方がいいと思う. 「全体の中でここがどのような位置づけにあるのか」がわかると読みやすいし, ひょっとすると「この部分はそもそも不要」ってことになるかもしれない. 逆に言うと, 「全体の中の位置づけ」が分からないと小手先の修正だけになるおそれもあります.

あと #2 にも書いたんだけど, 「文章とプログラムの整合性」はきちんととってください. 今の場合だと「$bb をカウントし」って書いてあるから「$bb の出現回数をカウントする」というに読める (#1 の補足の「$bbに関しては全て拾ってくる」も同様) んだけど, プログラムは「$boundary を探す」という動作になってる. つまり文章とプログラムがかみ合っていないので, 「書き換える」より前に「あなたが何を意図しているのか」を探らなきゃならなくなっちゃってます.

ということも含めて「何を目的としてどのように書いていて, どこでどのように困っているのか」を明確にした方がよいと思いますよ.
    • good
    • 0

うん, 何を聞きたいのかさっぱりわからん.



質問文には「$bb をカウント」とあるのにプログラムでは $boundary を調べてるし, そうかと思うと #1 への補足では「$bbに関しては全て拾ってくる」とあってやっぱり $bb を探すように読める.

多分, 疑問点を整理して質問し直した方がいいと思う. このままだと「労多くして功少なし」じゃないかな.

あと, 「初心者」っていちいち書かれるのは目障り. そんなこと書いても問題の解決には何ら意味を持たないよ.
    • good
    • 0
この回答へのお礼

指摘ありがとうございます.
疑問点を整理したほうがいいですね...
どうしたら伝わるのか,同系統の質問をされてる方の質問を見て出直します.

お礼日時:2011/12/28 00:53

> 「$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;
}
よろしくお願いします><

補足日時:2011/12/27 03:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!