上のスクリプトの内容の補足
今はわかってても後になったら何でこんなことしてるかわからない、というのがプログラムの基本なので、未来の自分に向けて補足を書いておく。
- while(<>) で入力ファイルを順に処理。
- chomp で、ファイル内の1行から改行コードを取り除き(chompの引数がない時は $_ に作用するので)。
- \tのsplitで、時間部分と種別部分を分割し、時間の方はさらに : で分割して時間部分と分部分に分ける。分けたものは分単位に直して計算しておく。
- definedで、$prev_timeの中身があるかチェック。二行目以降でないと、時間が出ないので。
- で、一つ上の行の時間から現在行までの時間を計算で求めて、種別にわけてhashに入れておく。hash超便利。他の言語でも便利だけど、perlのは扱いやすい。
- 現在行の値を取っておいて、次の行を読んだ時用に保存。
- で、読み取りが終わった後、読んだ中身を出力するだけ。