my %people; while( my $line = ) { my ($name, $value) = split /\s+/, $line; if (!exists $people{$name}) { $people{$name} = [ $value ]; # store array with one value } else { push @{$people{$name}}, $value; # push 2nd,3rd,.. value on array } } #### %people = ( 'Andreas' => [ '27' ], 'John' => [ '15' ], 'Andrew' => [ '34' ], 'Jim' => [ '12', '57' ], 'Peter' => [ '08' ] );