use strict; use warnings; use Data::Dump::Streamer; my %QSOs; $QSOs{header} = ''; while () { $QSOs{header} .= $_; last if //; } my %qso; my $key = ''; while (defined (my $line = )) { chomp $line; next if ! length $line; next if ! ($line=~ /]*>([^<]*)]*>([^<]*)(]*)>(.*)/; next if ! defined $tag or ! length $tag; if ($tag eq 'eor') { $QSOs{$key} = {%qso} if length $key; $key = ''; %qso = (); last; } $qso{$tag} = $text || ''; } } Dump (\%QSOs); __DATA__ Exported by jLog (c)2006 LA3HM, V 3.90.2.7 according to ADIF 2 jLog For jLog info: mailto:mail@jlog.org http://jlog.org/ Proposed ADIF2 Extensions may be included 20051029 213400 VC3O 20M SSB VHF 59 59 1 4 4 4 4 VC3 NA 14 0001 Y Y Y E 20060701 183206 VE6GG 20M SSB MWB 59 59 1 27 AB 2 4 RAC VE6 NA 14.16299 AB 1257 Y 2006-07-01 Y 2006-07-01 N7DQ