my (@records,$cur); while(<>) { chomp; if ($_ eq "//") { push @records, $cur if defined $cur; $cur = undef; } elsif (/^(.+?) - (.+)$/) { my ($key,$value) = ($1,$2); if (defined $cur->{$key}) { if (ref $cur->{$key}) { push @{$cur->{$key}}, $value } else { $cur->{$key} = [$cur->{$key}, $value] } } else { $cur->{$key} = $value } } else { warn "didn't handle input line: $_" } } push @records, $cur if defined $cur;