use strict; use warnings; open (FH, "<", "guru.txt") || die "died because $!\n"; my $str; { local $/; # slurp slurp $str = ; } close (FH); my $DATA; while ($str =~ m/\G((\d+)\s+(\d+)\n)/gc) { push @{$DATA->{$2}}, $3; } foreach my $num (sort keys %$DATA) { print "\n$num ", join (' ', @{$DATA->{$num}}); }