use strict; use warnings; my %seen; while ( ) { print unless $seen{(split /\|/)[0]}++; } __DATA__ 123|abc 123|cde 234|efg 456|hij