O ".." não cria uma lista temporária, então você não precisa do "while" no código abaixo.
09:09 < GabrielVieira> mantovani: "In the current implementation, no temporary array is created when the range operator is used as the expression in foreach loops" GabrielVieira++ 2013/1/29 Daniel de Oliveira Mantovani <[email protected]>: > 2013/1/12 Thiago Glauco <[email protected]>: >> 1-> de onde sua função tirou o @data? >> >> mas faça isso: >> >> my $i = 0; >> while($i <= $#data) { >> $i = 1 if $data[$i] eq $gi; >> ... >> > > Thiago, seu código é incompatível com o do autor acima. > > >> Evite usar labels. > Porque labels é uma má prática em Software Engineer ? Label é uma > feature poderosa que a linguagem oferece. > > sub array_find_position{$g=shift;return$_ if $f[$_]==$g for 0..$# } > > Se a lista for muito grande, > > sub array_find_position{$g=shift;$i=0;return$i if $f[$i]==$g while $i<=$# } > > []'s > >> >> regards. >> >> >> Em Sáb, 2013-01-12 às 20:37 +0000, Aureliano Guedes escreveu: >>> 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: [email protected] >>> > Date: Sat, 12 Jan 2013 18:20:16 -0200 >>> > To: [email protected] >>> > 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 <[email protected]>: >>> > > 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" <[email protected]> >>> 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 >>> > >> [email protected] >>> > >> http://mail.pm.org/mailman/listinfo/rio-pm >>> > > >>> > > >>> > > _______________________________________________ >>> > > Rio-pm mailing list >>> > > [email protected] >>> > > http://mail.pm.org/mailman/listinfo/rio-pm >>> > _______________________________________________ >>> > Rio-pm mailing list >>> > [email protected] >>> > http://mail.pm.org/mailman/listinfo/rio-pm >>> >>> _______________________________________________ >>> Rio-pm mailing list >>> [email protected] >>> http://mail.pm.org/mailman/listinfo/rio-pm >> >> >> _______________________________________________ >> Rio-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/rio-pm > > > -dom > > -- > > IBM - Business Analytics Optimization Consultant > Daniel Mantovani +5511 8538-9897 > XOXO -- -dom -- IBM - Business Analytics Optimization Consultant Daniel Mantovani +5511 8538-9897 XOXO _______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
