my %count; while (...) { my($field1, $field2) = split(...); if (exists $count{$field1}) { # force the value to be array ref if it's # not done so $count{$field1} = [$count{$field1}] unless ref $count{$field1}; push @{$count{$field1}}, $field2; } else { $count{$field1} = $field2; # normal assignment } }