[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