if ($fields[5] =~ /(OWNER|WAITING)/) { my $state = $1; # and perhaps this, for your new solution: $state .= $count if $state eq 'WAITING'; $x++; @fields = split " ", $temp[$x]; print "$state --- @fields\n"; #Add record to hash based on RECORD_ID $records{"$fields[1]"}{ $state } = { USER => "$fields[5]", FILENAME => "$fields[0]", PID => "$fields[6]", TIME => "$fields[9]", DATE => (join " ", "$fields[10] $fields[11]"), ELAPSED => [] }; #Increment to Next Line $x++; }