![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSC SLCTBOXもしくはSELECTに...
-
C言語のflagの使い方が分かりま...
-
perl:ループのカウンタ変数の値...
-
VBAのCallステートメントについて
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
「*:*」って何を意味するのでし...
-
構造体の変数の値を、動的に取...
-
セレクトメニューで2つの項目...
-
pythonで演算子を変数に代入す...
-
【至急!!!】python言語で本を見...
-
c言語 16進数の2進数への変換
-
linuxにおけるCの自作ヘッダフ...
-
FindFirst を複数条件で検索
-
2つのpythonがあって、一方で...
-
Pythonの配列を入力する方法に...
-
int(input("○○"))の使い方
-
ACCESS テキストボックスを隙...
-
formで特定のinputを送信しない...
-
セレクトボックスから別窓にジ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
初回起動のみ判別したい
-
実行中の変数の中身をイミディ...
-
C言語のflagの使い方が分かりま...
-
処理終了後、他のページへジャ...
-
VBAのCallステートメントについて
-
回数を指定しないで空白行まで...
-
問題作成のWebアプリの作り方を...
-
UWSC SLCTBOXもしくはSELECTに...
-
SetDlgItemInt( ) c++
-
c言語のプログラミングの問題で...
-
C#でDataFridViewの行をすべて...
-
内部処理中にNow Loadingみたい...
-
Perl/Tk使う利点は?
-
スカラー変数に処理を入れる
-
ページングで「前の○件」の方法
-
デ-タテ-ブルの内容での更新...
-
フラグをたてる、、の意味を教...
-
perl:ループのカウンタ変数の値...
-
バッファリング処理を高速化し...
おすすめ情報
失礼いたしました。
if文の条件式の”$i >=100”は無視して、”ある条件を満たしたとき”に置き換えていただけますでしょうか。
whileループ→forループ→if文→whileループ→forループ→if文→・・・
を繰り返す処理になります。
その度に、$iの値を保持し、次回はその値の続きからカウントしたいです。