r1 - 06 Aug 2006 - JoenioCosta
Como remover os elementos duplicados de uma lista
Problema
Você precisa remover todos os elementos duplicados de uma lista.Solução
Use um hash.Discussão
Se a sua lista está ordenada, você pode remover os elementos iguais adjacentes (semelhante ao uniq do unix):
undef $prev;
@out = grep($_ ne $prev && ($prev = $_, 1), @in);
Na maioria dos casos, porém, você pode obter o mesmo efeito usando um hash:
undef %saw;
@out = grep(!$saw{$_}++, @in);
Mas, talvez você devesse estar usando um hash desde o início, não?
