[bcn-pm] Duda con arrays
Alex Muntada
alexm a caliu.cat
dis feb 7 13:44:22 PST 2015
Verónica Olmos González:
> for ($i = 0; $i <= scalar(@sequences); $i++) {
> for ($j = 0; $j <= scalar(@pos); $j++) {
> substr($sequences[$i],$pos[$j],1) =~ s/\D/N/;
> }
> }
>
> Ahora bien, en el último bucle se me va todo de madre, permanece iterando
> continuamente.
Estás iterando los bucles más allá de la última posición: si
scalar(@sequences) es el tamaño del array, estás iterando desde 0
hasta el tamaño en vez de el tamaño-1. En el último bucle además estás
cambiando el array @sequences y resulta que al usar un índice por
encima del último estás aumentando el tamaño del array a cada paso,
que es justo la condición de salida. Por eso no termina nunca.
Si pones estas dos directivas al principio del código verás que perl se queja:
use warnings;
use strict;
El error que da es:
Use of uninitialized value in substitution (s///) at veronica.pl line 26.
Para resolver ésto tan solo tienes que cambiar la condición de salida
de los bucles por "$i < scalar(@array)", sin el igual.
Un saludo!
Alex
Més informació sobre la llista de correu Barcelona-pm