use strict; use warnings; # you left this out my $file = "controls.txt"; open (my $fh, '<', $file) or die "Can't open $file for read: $!"; # Don't use two-arg open unless you know why, and use # lexical filehandles unless you know of a reason not to. my %seen; while ( <$fh> ) { $seen{$_} = 1; # Later assignments to an identical key # overwrite earlier ones, so there's really # no need to check if all you want is uniqueness. } my @unique = keys %seen; print @unique;