Perlについての質問箱 30箱目

このエントリーをはてなブックマークに追加
753デフォルトの名無しさん
すみませんが 質問させてください

あるファイル(数万行の数字データ)の上から1行ずつ順番に読み込んで
最終行になるとまた1行目に戻って・・・という作業をしたいのです
途中でプログラムを閉じて再開したときも次の行から開始が可能であれば
もう言うことナシですが,残念ながら自分では何とも出来ず

丸2日間ネット上で調べに調べ

srand();
open(FILE, "data.txt");
rand($.) < 1 and $line = $_ while <FILE>;
close(FILE);
$line =~ s/\n//g;

とランダムで1行読み込む仕様で妥協するのが限界でした
もし上記作業がperlで可能でしたら申し訳ないですが
教えていただけないでしょうか

可能な方いらっしゃいましたら どうかお願いします。
754デフォルトの名無しさん:2007/05/23(水) 14:13:46
いつ終わるんだそれは
755753:2007/05/23(水) 14:27:55
すみません
イカのような感じで半永久的に作業が続くわけでして・・・^^;

print <<"_HTML_";
Content-type: text/html

<html><head>
<meta http-equiv="refresh" content="5; url=aaa.cgi">
756デフォルトの名無しさん:2007/05/23(水) 14:34:48
何行目まで読んだかどこかに書いとけばいいじゃん。
757デフォルトの名無しさん:2007/05/23(水) 14:38:03
>>755の「イカ」がどっから出てくるのかがわからん。

とりあえずCGIは置いといて、まずファイルの入力の基本をググって調べればいいんじゃね
758デフォルトの名無しさん:2007/05/23(水) 14:38:30
以下、だろ。
759デフォルトの名無しさん:2007/05/23(水) 14:47:34
イカ=以下、がわからんじゃなくて
イカ=print <<・・、がどこから出て来たかわからん、ってことだよ
760デフォルトの名無しさん:2007/05/23(水) 14:52:37
続きでなんか書こうとしてるんじゃないの?
761デフォルトの名無しさん:2007/05/23(水) 14:54:09
>>759
以下のように、が、"<meta http-equiv="refresh" content="5; url=aaa.cgi">" を指してるんじゃないの?
大体、何を言わんとしてるかはわかる
762753:2007/05/23(水) 14:56:30
わかんないヤツが説明すると伝わりにくいですね
すみません・・・

えーっと
5秒おきにaaa.cgiにアクセスしてIEの画面に数字を順番に
表示させたいだけなんです

753で書いた方法で $line の数値を表示させるだけと言えば
伝わりますかね・・・

763デフォルトの名無しさん:2007/05/23(水) 15:02:20
webprogの所轄だが、行数をどこかに保存すればいいだけだろう?
CookieやURIのクエリ部分だとか、サーバ上のファイルとかメモリとか。
764デフォルトの名無しさん:2007/05/23(水) 15:02:57
とりあえずWebProg板いってこいな
765753:2007/05/23(水) 15:05:13
板違いでしたか すみません
どっちか悩んだあげくこっちに書いてしまいました

お邪魔しました
766764:2007/05/23(水) 15:06:45
大体、数万行のテキストデータだとしてもかなりの容量になるだろ
対象マシンのメモリ可哀想だな。 しかも、IEがそのデータを表示仕切る前に
IE落ちるだろうし、表示仕切る前に5秒経って更新かかるだろうな。
しかも、更新しようにもかなりの負荷がかかってるからモッサリ。

ブラウザクラッシャーでも作ろうとしてるのか?
767753:2007/05/23(水) 15:10:09
いえ 表示自体はその数万行のうち上から1行ずつでいいんです
1行目表示して5秒後には2行目・・・みたいな感じで。
順番に表示されるのを見て 手元のデータと比較していくだけの
単調な作業なんです