in reply to Split file output into array of arrays

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; } }

Replies are listed 'Best First'.
Re^2: Split file output into array of arrays
by GrandFather (Saint) on Feb 16, 2010 at 23:49 UTC

    Keeping a count of elements in an array in Perl has rather a bad smell. Instead you could:

    my @records; while (<DATA>) { if ($_ =~ /^-/) { # New record push @records, []; next; } next if !@records; push @{$records[-1]}, $_; }

    True laziness is hard work