use strict; use warnings; use feature 'say'; my %keep; for my $line ( ) { chomp $line; my ( $P1, $P2, $I ) = split /,/, $line; $keep{"$P1$P2"} = $line; if ( $keep{"$P2$P1"} ) { delete $keep{"$P2$P1"}; delete $keep{"$P1$P2"}; } } say for values %keep; __DATA__ personG,personH,42 personA,personB,10 personB,personA,190 personA,personC,23 personA,personD,43 personE,personF,10 #### $ perl 1226286.pl personG,personH,42 personE,personF,10 personA,personD,43 personA,personC,23