
While文のループのなかにfor文でループをまわしているスクリプトなのですが、
forの中でカウンタ変数をつくり、ループ回数を計測しております。
またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。
$i=0;
While(○○){
処理1
for(××){
処理2
$i++;
if($i >=100){
処理3
last;
}
}
}
ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。
このような場合、どうすれば$iの値を保持できますでしょうか。
お詳しい方、宜しくお願い致します。
※ネストがうまく表現できず、みずらくてスミマセン。
No.1ベストアンサー
- 回答日時:
Perlのfor(式1 ; 式2; 式3 ) の 式1 ; 式2; 式3 いずれかを省略することができます。
また、
for(式1 ; 式2; 式3 ) { 処理 }
は
式1;
while(式2) {
処理
式3
}
と(ほぼ)同じです。
これらを考えて、変数が初期化されないようにすればいいのではないでしょうか。
> $iの値はforループを抜けるとリセットしてしまいます。
for文を抜けても、変数の値は保持されます。
リセットされるのは、リセットするようにプログラムに書いてあるからです。
for(××){
って省略してありますけど、ここで for($i=0;〜) ってやってませんか?
No.2
- 回答日時:
追記です。
forループは途中で抜けないとダメなんですか?
$i=0;
my $firstTime=1;
While(○○){
for(××){
if( $firstTime ) {
処理1 ;
$firstTime=0 ;
}
処理2
$i++;
if(条件を満す) {
処理3
$firstTime=0 ;
}
}
}
とか
$i=0;
While(○○){
処理1 ;
for(××){
処理2
$i++;
if(条件を満す) {
処理3
処理1 ;
}
}
}
とか、last を使わない方法があるのでは?
処理の内容次第では、もっとシンプルに書けるかもしれません。
ログの表示で、例えばログファイルのログを1000行読み込む毎に表示、最終的に1万行読み込む、といった処理をするためlastを使っています。
他の記述ができないか、考えてみます。
ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
処理終了後、他のページへジャ...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
16進の10進変換について
-
ファイル操作
-
テーブル内でドロップダウンメ...
-
sendmailで複数の宛先にメール...
-
Pythonの np.indicesに関する質...
-
I2C接続のLCDディスプレイを使う
-
セレクトボックスのselected属...
-
sendmailで複数アドレスに送信...
-
awkの正規表現での最左最短マッ...
-
関数「exists」と「defined」の...
-
実行時エラー 3020の対策
-
sendmailで送信したメールが届...
-
linuxにおけるCの自作ヘッダフ...
-
MSXMLでの属性の存在確認法
-
「*:*」って何を意味するのでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
C言語のflagの使い方が分かりま...
-
SetDlgItemInt( ) c++
-
再帰的処理について
-
フォームの太字を置き換える
-
arduino の割り込み処理について
-
C言語のプログラミング
-
リファラのないカウントを防止
-
問題作成のWebアプリの作り方を...
-
自動的にエスケープを付けて別...
-
Perlの基礎中の基礎を教え...
-
実行中の変数の中身をイミディ...
-
if (条件) { 処理 }
-
ページングで「前の○件」の方法
-
数値計算の際、1000以下は端数...
-
{ ; }とは、どういう意味?
-
処理終了後、他のページへジャ...
-
アクセス制限
-
UWSC SLCTBOXもしくはSELECTに...
-
右詰表示
おすすめ情報
失礼いたしました。
if文の条件式の”$i >=100”は無視して、”ある条件を満たしたとき”に置き換えていただけますでしょうか。
whileループ→forループ→if文→whileループ→forループ→if文→・・・
を繰り返す処理になります。
その度に、$iの値を保持し、次回はその値の続きからカウントしたいです。