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 #### $HASH1 = { "20051029 :213400" => { "app_jlog_eqsl_qsl_rcvd:1" => 'Y', "app_jlog_eqsl_qsl_sent:1" => 'Y ', "app_jlog_lotw_qsl_sent:1" => 'Y ', "app_jlog_qso_number:4" => '0001', "band:3" => '20M ', "call:4" => 'VC3O ', "cont:2" => 'NA', "cqz:1" => '4 ', "dxcc:1" => '1 ', "freq:2" => '14 ', "ituz:1" => '4 ', "mode:3" => 'SSB ', "operator:3" => 'VHF', "pfx:3" => 'VC3 ', "qsl_sent_via:1" => 'E ', "qsoComplete:1" => ' ', "rst_rcvd:2" => 59, "rst_sent:2" => '59 ', "srx:1" => '4 ', "stx:1" => '4 ' }, "20060701 :183206" => { "app_jlog_eqsl_qsl_sent:1" => 'Y', "app_jlog_eqsl_qslsdate:10" => '2006-07-01 ', "app_jlog_lotw_qsl_sent:1" => 'Y', "app_jlog_lotw_qslsdate:10" => '2006-07-01 ', "app_jlog_qso_number:4" => '1257 ', "band:3" => '20M ', "call:5" => 'VE6GG ', "cont:2" => 'NA ', "contest_id:3" => 'RAC', "cqz:1" => '4 ', "dxcc:1" => '1 ', "freq:8" => '14.16299 ', "ituz:1" => '2 ', "mode:3" => 'SSB ', "operator:3" => 'MWB', "operator:4" => 'N7DQ ', "pfx:3" => 'VE6 ', "qsoComplete:1" => '', "rst_rcvd:2" => 59, "rst_sent:2" => '59 ', "srx:2" => 'AB ', "state:2" => 'AB ', "stx:2" => '27 ' }, header => "Exported by jLog (c)2006 LA3HM, V 3.90.2.7 according to ADIF 2\njLog\nFor jLog info:\n mailto:mail\@jlog.org\n http://jlog". ".org/\n Proposed ADIF2 Extensions may be included\n\n" };