use strict; use warnings; use 5.010; open my $INFILE, '<', 'data1.txt' or die "Couldn't open file: $!"; my %hash; while (<$INFILE>) { chomp; my ($first_col, $second_col) = split; push @{$hash{$first_col}}, $second_col; } while ( my($first_col, $aref) = each %hash ) { say "$first_col: ", join(', ', @$aref); } close $INFILE; --output:-- three: goodbye one: hello, banana two: world, apple