my %entries; while ( my $entry = ) { chomp $entry; my ( $size, $name ) = split /\s+/, $entry; push @{$entries{$size}}, $name; } local $" = "\t"; print scalar( @{$entries{$_}} ), ": @{$entries{$_}}\n" for sort { $a <=> $b } keys %entries; __DATA__ 12 filename1 14 filename2 14 filename3 11 filename4 14 filename5