ファイルの容量が大きく。perlを使用してデータの集計をしています。
"A"がきたらflag1をたてなさい。
"B"がきたらflag2をたてなさい。
"C"がきたらflag3をたてなさい。
これでAとBとCを抜き取ること&AからCまでの時間を取得したのですが、
Bの数のmaxの値だけを抜き取りたいのですが、Bがきたときの数をすべて
出力してしまいます。下記の文だと、Bが4回きたら、1,2,3,4と出力してしまいます。
それで4だけを出力したいのですがどのように書き換えたらようか教えて頂けますでしょうか。
'-----------------------------------------------------------------------------
open (IN,"< $ARGV[0].txt") or die;
open (OUT,"> $ARGV[0]_out.txt") or die;
$flag =0;
my $a, $b, $c;
$count = 0;
#######################################################
while($line =<IN>){
($time,$data) = split(/\s+/,$line);
if($data eq "A") {
$flag=1;
$a = $time;
#print OUT $line;
#print OUT "\n";
}
elsif($data eq "B"){
$flag=2;
$count++;
$count == $data;
print OUT ("$count\n")
}
#print OUT ("$count\n");
elsif($data eq "C"){
$flag=0;
$count=0;
$b = $time;
$c = $b - $a;
print OUT ("time $c\n")
}
}
-------------------------------------------------------------------------------
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
出力していって書き込みたいって意味でしたか・・・。
よく理解して無かったです。すいません。もしBをみつけた最大の時に書き込みたいなら、まずBの個数をいったん調べる必要があると思います。
私ならそうするって程度意見ですが。
No.4
- 回答日時:
や~, そこまでは言ってませんよ~>#3.
そもそも「何を考えてこのプログラムを作ったのか」がさっぱりわからんので....
例えば elsif($data eq "C") のところで $count を 0 にする理由が見当たらん. 「flag1 をたてる」が $flag = 1; で「flag2 をたてる」が $flag = 2; なのになぜ「flag3 をたてる」が $flag = 0; になるのかとか, とにかく上の文章からどうしてこんなプログラムになるのかわからんのですよ....
No.3
- 回答日時:
次のようにするとどうでしょうか。
No.1さんが言ってるのは 2 のことですよ。
1. eq 'B'節の $count == $data; は無駄なので削除
2. eq 'B'節の print を eq 'C'節の $count = 0; の行より前に移動
3. eq 'C'節の $b は無駄なので削除して、$c = $time - $a; とする
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# [至急]Project Euler:#17Number letter countsコード入力出力解説 2 2022/09/24 02:46
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急お願いします。C言語で.img...
-
DOSコマンドで、標準出力を出力...
-
アルファベット、数字を読み込...
-
Perlからchasenの使い方
-
ドメインからIPアドレスあるい...
-
Perlでファイルの末尾から指定...
-
sprintfについて
-
MAC OSXのTerminalにperlの出力...
-
Perl<->Oracle間での文字化けに...
-
VBAコードを張り付け後のエクセ...
-
バッチファイルの作り方(CSV→...
-
batファイルでrenameができませ...
-
close()で例外が投げられる理由
-
vba dir の相対パス
-
MATLABのm-fileについて
-
文字列をカウントする方法
-
一定時間が経過したフォルダの削除
-
JavaでCSVファイルを高速に読む...
-
画像アップロード機能を追加し...
-
csvファイルの横方向への改行に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
教えて!perlから.exeファイル...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
timeコマンドの結果をテキスト...
-
sprintfで10進数を桁数指定で16...
-
log2の「正確な」計算方法
-
機器のI/OをArduinoでSDに記録...
-
Perl<->Oracle間での文字化けに...
-
Perl中で teeを使っても戻り値...
-
テキストファイルから日本語部...
-
バッチファイルで、記号を含む...
-
htmlから、ファイル、もしくはC...
-
perlでの出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報