雨谷の日和

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

人狼BBS作成日記16

@FileInに読み込んだデータを順に取り出して、出力するソースコードを書いてみます。
まずは、読み込んだ行数分、ループさせます。

for($msgcnt = 0 ; $msgcnt < @FileIn; $msgcnt++ ){
  &STDOUT_MSG( $msgcnt );
}

STDOUT_MSGというのは、メッセージを標準出力に書き出すためのユーザ定義関数で、以下のようにしてみました。

sub STDOUT_MSG {
  ( $Msg_Type, $Msg_Char, $Msg_Icon, $Msg_Time, $Msg_Text) = split( /<>/, @FileIn[@_[0]] );
  if( $Msg_Type < 80 ){
    print "<div class=\"cell\"><div class=\"char\">\n";
    print "<img class=\"char\" src=\"$Msg_Icon\" width=\"50\" height=\"50\" alt=\"$Msg_Char\"></div>\n";
    print "<div class=\"name\">$Msg_Char [$Msg_Time]</div>\n";
    print "<div class=\"msg$Msg_Type\">$Msg_Text</div><br class=\"clear\"></div>\n";
    print "<br>\n";
  }else{
    print "<div class=\"cell\">\n";
    print "<div class=\"name\">システムメッセージ [$Msg_Time]</div>\n";
    print "<div class=\"msg$Msg_Type\">$Msg_Text</div><br class=\"clear\"></div>\n";
    print "<br>\n";
  }
}

splitで「<>」を区切り文字にして、各項目を切り出しています。Msg_Typeが80の時はシステムメッセージなので、if文で別処理にしてあります。
まあ、これで一応上手くいっています。