雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

人狼BBS作成日記28

日付をデータ行の先頭に付与したので、読み込み部分をそれに対応させてみましょう。

sub FILEIN_MSG{
  if( open( LOGFILE, "<./msg.txt" ) ){
    flock( LOGFILE, 1 );
    ($Char_Count, $Vil_Img, $Vil_Css) = split( /<>/, <LOGFILE> );
    for($index = 0 ; $index < $Char_Count; $index++ ){
      $Char_Data[$index] = <LOGFILE>;
    }
    $index = 0;
    while($temp = <LOGFILE>){
      ($Msg_Date, $Msg_Type, $Msg_Char_Index, $Msg_Time, $Msg_Text) = split( /<>/, $temp);
      if($Msg_Date == $Day_Count){
        $Msg_Data[$index++] = $temp;
      }
    }
    close( LOGFILE );
  }
}

……こんな感じかな?
違っているのは、$Msg_Dateとして日付を読み込み、それを$Day_Countと比較して、同じだったらログデータとして$Msg_Dataに格納しているところでしょうか。前は全部の行を放り込んでましたから。
ここでは読み込み時に該当日付のデータだけを選別していますが、読み込むときは全部読み込んでおいて、出力時に選別するという方法もアリでしょうね。
うーん。まあ、一応メモリ節約という意味で、該当日付のものだけを読み込むということにしておきます。
実装を進めていけば、そのうち別の結論になりそうな気もしますから、今はこのままで。