[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