my (%hsh, @keepers); @hsh{@arr} = (); while (<>) { push @keepers, $_ unless grep {!exists $hsh{$_}} split; }