From ptfzs em yahoo.com.br Thu Feb 7 14:59:46 2008 From: ptfzs em yahoo.com.br (Patty Silva) Date: Thu, 7 Feb 2008 14:59:46 -0800 (PST) Subject: [PortoAlegre-pm] Duvida duplicatas array Message-ID: <740195.23335.qm@web31312.mail.mud.yahoo.com> Pessoal.. alguem poderia me explicar o comando abaixo: my %seen = (); my @unique = grep { ! $seen{ $_ }++ } @array; --> para eliminar elementos repetidos de um array... Obrigada :D Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20080207/12db0b77/attachment.html From igorgf em gmail.com Fri Feb 8 12:22:02 2008 From: igorgf em gmail.com (Igor Garcia) Date: Fri, 8 Feb 2008 18:22:02 -0200 Subject: [PortoAlegre-pm] Duvida duplicatas array In-Reply-To: <740195.23335.qm@web31312.mail.mud.yahoo.com> References: <740195.23335.qm@web31312.mail.mud.yahoo.com> Message-ID: Não vou explicar passo a passo porque isso tu podes ver consultando o perldoc de cada um dos itens... Mas a tecnica é simples, consiste em jogar o valor duplicado como chave de um hash (que nao aceita duplicações)... Depois retorna-se os keys desse hash (que sao os elementos do array, porém sem duplicidade)... Neste caso, usaram o grep para fazer as iterações, mas poderiamos usar tb map ou foreach. Um exemplo similar seria: my %seila = (); # hash temporario utilizado para remover as duplicidades foreach my $a (@array){ $seila{$a}++; }; # itera o array com valores duplicados my @unique = keys %seila; # cria um array com base nas chaves do hash temporário Espero ter ajudado. Igor Garcia Em 07/02/08, Patty Silva escreveu: > > Pessoal.. alguem poderia me explicar o comando abaixo: > > my %seen = (); > my @unique = grep { ! $seen{ $_ }++ } @array; > > --> para eliminar elementos repetidos de um array... > > Obrigada :D > > ------------------------------ > Abra sua conta no Yahoo! Mail, > o único sem limite de espaço para armazenamento! > > _______________________________________________ > PortoAlegre-pm mailing list > PortoAlegre-pm em pm.org > http://mail.pm.org/mailman/listinfo/portoalegre-pm > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/portoalegre-pm/attachments/20080208/cbad8be9/attachment.html From igor.sutton em gmail.com Fri Feb 8 13:38:53 2008 From: igor.sutton em gmail.com (Igor Sutton) Date: Fri, 8 Feb 2008 22:38:53 +0100 Subject: [PortoAlegre-pm] Duvida duplicatas array In-Reply-To: References: <740195.23335.qm@web31312.mail.mud.yahoo.com> Message-ID: <6c65a53f0802081338y68e9836ag5dc395d61c00360e@mail.gmail.com> Em 08/02/08, Igor Garcia escreveu: > Não vou explicar passo a passo porque isso tu podes ver consultando o > perldoc de cada um dos itens... > Mas a tecnica é simples, consiste em jogar o valor duplicado como chave de > um hash (que nao aceita duplicações)... Depois retorna-se os keys desse hash > (que sao os elementos do array, porém sem duplicidade)... > Neste caso, usaram o grep para fazer as iterações, mas poderiamos usar tb > map ou foreach. > > Um exemplo similar seria: > > my %seila = (); # hash temporario utilizado para remover as duplicidades > foreach my $a (@array){ $seila{$a}++; }; # itera o array com valores > duplicados > my @unique = keys %seila; # cria um array com base nas chaves do hash > temporário Ou então ter usado List::MoreUtils::uniq(): use List::MoreUtils qw( uniq ); my @all = qw( 1 2 1 1 2 3 4 4 2 ); my @uniq = uniq( @all ); # devolve ( 1 2 3 4 ) -- Igor