foreach $searchstring (grep {!exists $guard{$_}} @array) { if (m/$searchstring/i) { push @stringsfound, $searchstring; $guard{$searchstring} = undef; } }