#!/usr/bin/perl use Modern::Perl '2014'; # core modules use List::Util qw/any/; # this will hold the data read my %names = (); # 1. read input data while() { chomp; # split $_ along commas, returning at most 2 pieces my ($name, $length) = split /,/, $_, 2; # save $length for $name push @{ $names{$name} }, $length; } # 2. processing - none # 3. select what to output foreach my $name (sort keys %names) { # did $name appear at least four times? if(scalar @{ $names{$name} } >= 4) { # is at least one of the associated lengths >= 50? if(any { $_ > 50 } @{ $names{$name} }) { say "$name: ", join ",", @{ $names{$name} }; } } } __DATA__ CA,57 MO,22 CA,88 CA,99 NC,34 CA,104