my %partitions; while ( ... my @cols = split(',', $line); my $pname = "$cols[0]:$cols[2]"; $partitions{$pname} ||= []; push @{$partitions{$pname}}, $cols[3]; }