my $arraycount=0; my @array; while(){ #New record so new top level item if($_ =~ /^-/){ $arraycount++; }else{ #force array scalar to be a lower level array. push @{$array[$arraycount]}, $_; } } #### my $arraycount=0; my @array; while(){ #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; } }