#!/usr/bin/perl -w use strict; use warnings; my ($in_game, $info, $keys, $k, $v); while ($_ = ) { chomp; s/\r//g; if (m{^\s*\s*$}) { print "$_: $info->{$_}\n" for @$keys; print "\n"; $in_game = 0; undef $info; undef $keys; } if ($in_game) { my ($k, $v) = m{^\s*<(\w+)>(.*?)$}; if (!$k) { die "bad line: $_\n"; } $v =~ s/^$//; $info->{$k} = $v; push @$keys, $k; } if (m{^\s*\s*$}) { $in_game = 1; $info = {}; $keys = []; } }