#!/usr/bin/perl use strict; use warnings; my %data; while () { chomp; next unless /\S/; my ($name, $num) = /(.*)\s+(\d+)/; push @{$data{$name}}, $num if ($name && $num); } foreach my $name (sort keys %data) { print "$name "; print join ',', sort { $a <=> $b } @{$data{$name}}; print "\n\n"; } __END__ Chee S. L. 8 Cheng T. H. 5 Cheng T. H. 2 Chetan M. 4