我已經開始了一個小寵物的項目來分析日誌文件團隊要塞2日誌文件對每行一個事件,如下列:創建一種日誌文件「組合的」解析器
L 10/23/2009 - 21:03:43: "Mmm... Cycles!<67><STEAM_0:1:4779289><Red>" killed "monkey<77><STEAM_0:0:20001959><Blue>" with "sniperrifle" (customkill "headshot") (attacker_position "1848 813 94") (victim_position "1483 358 221")
注意日誌文件的語法有一些常見的部分。例如,姓名由四部分組成:姓名,身份證,蒸汽身份證和當時玩家的團隊。我不希望重寫這種正則表達式,而是希望稍微抽象一點。
例如:
my $name = qr/(.*)<(\d+)><(.*)><(Red|Blue)>/
my $kill = qr/"$name" killed "$name"/;
這工作得很好,但現在正則表達式返回取決於$name
格式結果(打破我試圖達到的抽象)。
my ($name_1, $id_1, $steam_1, $team_1, $name_2, $id_2, $steam_2, $team_2)
但我真的很類似::
my ($player1, $player2)
以前的數據在哪裏$ PLAYER1和$ player2將元組的例子如上面將匹配。我認爲,「殺死」事件並不需要完全瞭解玩家,只要它具有創建玩家的信息,這些元組就提供了這些信息。
對不起,如果這是一個漫無目的,但希望你可以提供一些建議!
是的,我考慮過這一點,但不確定是否有辦法避免多個步驟。我可以和這個住在一起!我可能會看看其他一些解決方案(比如BNF)來描述日誌條目,但是這肯定會讓我繼續。 謝謝dwp – ocharles 2009-10-24 16:06:47