my %seen; my @unique = grep !$seen{$_}++, @array; #### my (%seen, $seen_undef); my @unique = grep defined ? !$seen{$_}++ : !$seen_undef++, @array;