役職の読み込みを考えてみます。
まず、役職を格納するための配列を用意しておきます。
@Char_Cast = ();
この配列には、ログファイルの読み込み処理時「配役決定(55)」のデータ行を読み込んだときにその文字列(wolf、fortuneなど)を格納します。
以下のようになります。
}elsif($Line_Type == 55){ $Char_Cast[$Line_Char_Index] = $data[0]; }
これで読み込みとしてはオッケーでしょう。
あとは、格納した値を処理中でチェックしながら処理を分岐させれば良いわけです。