[Rio-pm] Percorrendo array

Tiago Peczenyj tiago.peczenyj em gmail.com
Sábado Janeiro 12 12:48:46 PST 2013


mas vc vai retornar o ultimo elemento se não encontrar o valor desejado?

Eu vejo 2 problemas na sua abordagem:

1 - vc não precisa do last LINE, de fato apenas last seria suficiente
mas vc poderia colocar um return $position no lugar e retornar undef
ou -1 (ou die "nao encontrei") como caso default.

2- vc pode usar a subrotina first do pacote List::Util (built in)

use List::Util qw(first);

my @a = (1,2,9,3,4);

print first { $a[$_] == 9 } 0.. scalar @a;

para ser mais sucinto vc poderia usar

first_index do List::MoreUtils (cpan)

2013/1/12 Aureliano Guedes <guedes_1000 em hotmail.com>:
> Era sim, mas resolvi tomar outro metodo.
>
> sub array_find_position{
>     my $gi = shift;
>     my $position = 0;
>     LINE: foreach (@data){
>         if ($_ eq $gi){
>             last LINE;
>       }
>         else{
>             $position++;
>         }
>     }
>     return $position;
> }
>
>> From: blabos em gmail.com
>> Date: Sat, 12 Jan 2013 18:20:16 -0200
>> To: rio-pm em pm.org
>> Subject: Re: [Rio-pm] Percorrendo array
>
>>
>> perl -E '@array=(1..10); for(my $i = 0; $i < 10; $i++){ if($array[$i]
>> == 2){ $i = 5} if($array[$i] == 7) {$i = 10} say $array[$i]}'
>>
>> Tipo isso?
>>
>> 2013/1/12 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
>> > nao use foreach. use for ou while p indice e altere-o qdo quiser p
>> > avancar
>> > ou voltar
>> >
>> > Em 12/01/2013 15:53, "Aureliano Guedes" <guedes_1000 em hotmail.com>
>> > escreveu:
>> >>
>> >> Ola Monges,
>> >>
>> >> Me surgiu uma duvida nesse momento.
>> >>
>> >> Imagine que temos um array de 10 posições:
>> >> my @a = qw(0 1 2 3 4 5 6 7 8 9);
>> >>
>> >> Então este array esta em um loop, no caso um foreach:
>> >>
>> >> foreach my $i (@a){
>> >> ...
>> >> }
>> >>
>> >> Mas eu quero que se o valor dessa posição seja 6, por exemplo, o array
>> >> volte para segunda posição.
>> >>
>> >> Não sei se minha pergunta ficou estranha ou difícil de entender, mas
>> >> como
>> >> eu faria isso??
>> >>
>> >> _______________________________________________
>> >> Rio-pm mailing list
>> >> Rio-pm em pm.org
>> >> http://mail.pm.org/mailman/listinfo/rio-pm
>> >
>> >
>> > _______________________________________________
>> > Rio-pm mailing list
>> > Rio-pm em pm.org
>> > http://mail.pm.org/mailman/listinfo/rio-pm
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm



-- 
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj


Mais detalhes sobre a lista de discussão Rio-pm