use strict; use warnings; my @c; my @a = qw ( server1 server2 server3 server5 ); my %a = map { $_ => 1 } @a; # Solution 4 my $filename = 'file'; open my $fh, '<:crlf', $filename or die "$0: Can't open $filename $!"; while (defined(my $line = <$fh>)) { chomp $line; # Solution 1 push @c, $line if not $line ~~ \@a; # Solution 2 push @c, $line if not grep { $line eq $_ } @a; # Solution 3 use List::Util qw(first); push @c, $line if not first { $_ eq $line } @a; # Solution 4 push @c, $line if not exists $a{$line}; } close $fh; print "@c";