#!/usr/bin/env perl use strict; use warnings; use autodie; my $infile = 'pm_11140267_input.txt'; my $min_to_keep = 2; # 30 for production my %data; { open my $fh, '<', $infile; while (<$fh>) { chomp; my (undef, $col2, $col3) = unpack 'A15xA10xA13'; push @{$data{$col3}}, $col2; } } # For demo only: print "Interim results:\n"; use Data::Dump; dd \%data; print "\nWanted output data:\n"; for (sort keys %data) { next if @{$data{$_}} < $min_to_keep; print "$_: ", join(', ', @{$data{$_}}), "\n"; }