Scott,
Try something akin to this;
N.B code is untested and I've probably screwed up the syntax somewhere.
my $arraycount=0;
my @array;
while(<INPUT>){
#New record so new top level item
if($_ =~ /^-/){
$arraycount++;
}else{
#force array scalar to be a lower level array.
push @{$array[$arraycount]}, $_;
}
}
or you could do both your steps at once.
my $arraycount=0;
my @array;
while(<INPUT>){
#New record so new top level item
if($_ =~ /^-/){
$arraycount++;
}else{
#force array scalar to be a lower level HASH.
my ($hkey,$hdet) = split/:/,$_;
${$array[$arraycount]}{$hkey} = $hdet;
}
}