#!/usr/bin/perl -w use strict; my @records; my %record; my $recordinprogress = 0; while (<>) { if (/-------/) { if ($recordinprogress) { push @records, { %record }; %record = (); $recordinprogress = 1; } } elsif (/([^:]+): (.*)/) { $recordinprogress = 1; $record{$1} = $2; } }