use warnings; use strict; my ( @results, %fields ); while(<>){ s/\0//g; if (/(?[1] cmp $b->[1] } @results; open OUT, ">results.txt" or die $!; foreach( @final ) { my $fieldNames = $_->[1]; if ( ! exists $fields{ $fieldNames } ) { $fields{ $fieldNames } = 1; print OUT @{ $_ } } } close OUT;