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