use Scalar::Util 'looks_like_number'; #... my @filtered = grep { defined && $string_or_number ne $_ && !(looks_like_number($_) && looks_like_number($string_or_number) && $string_or_number == $_) } @strings_or_numbers;