http://www.perlmonks.org?node_id=1047067


in reply to Removing certain lines from array

Similar to other solutions but storing each line along with a reference to the relevant word count hash element in an AoA then using grep and map to print only the lines we want. Note that I have to dereference ( ${ $_->[ 1 ] } ) to get at the value in the hash.

$ perl -Mstrict -Mwarnings -E ' open my $inFH, q{<}, \ <<EOD or die $!; hello 1234 5698 7458 hi 1457 7459 6214 good_day 1458 hi 1258 3658 good_morning 4758 hi 1453 EOD my @lines; my %counts; while ( <$inFH> ) { my $first = ( split )[ 0 ]; $counts{ $first } ++; push @lines, [ $_, \ $counts{ $first } ]; } print for map { $_->[ 0 ] } grep { ${ $_->[ 1 ] } == 1 } @lines;' hello 1234 5698 7458 good_day 1458 good_morning 4758 $

I hope this is of interest.

Cheers,

JohnGG