Bienvenido a los foros de Perl en Español, francogonzalez.
Cuando hablas de sacar 21 veces unos valores y eso repetirlo dos veces, estamos hablando de una sucesión de datos en dos dimensiones (2 veces por 21 secuencias).
En cambio, en el bucle más interior, estás sacando los valores guardados en arreglos (que solo tienen una dimensión).
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my (@Avel, @Ao, @Ach4, @Aco, @Aco2);
srand();
for my $i ( 0 .. 1 ) {
for my $j ( 0 .. 20 ) {
my $V = int rand 6000;
my $O = int rand 20;
my $Ch = int rand 50;
my $C0 = int rand 5000;
my $C02 = int rand 50;
push @Avel, $V;
push @Ao, $O;
push @Ach4, $Ch;
push @Aco, $C0;
push @Aco2, $C02;
printf "Valores reemplazo estación %2d: Vel = %4d, O2 = %2d, CH4 = %2d, CO = %4d, CO2 = %2d.\n",
$j, $Avel[$j], $Ao[$j], $Ach4[$j], $Aco[$j], $Aco2[$j];
}
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Dicho de otra manera: estás generando, 21 veces, una serie de valores que los estás guardando en los arreglos. Cuando el bucle $i vuelve a comenzar por segunda vez, se vuelven a generar nuevas 21 veces secuencias de valores que quedan almacenados
al final de los arreglos, por detrás de los primeros 21 valores, PERO en el printf() solo indicas que saquen los 21 primeros... no llegamos a ver los segundos.
La modificación es fácil. Si lo que queremos es que en los arreglos se guarden un total de 42 valores (dos secuencias de 21), ya lo tenemos. Pero lo que hay que arreglar, es cómo verlos: solo hay que cambiar la línea 25 del código anterior, por esta otra:
Using perl Syntax Highlighting
$j, $Avel[$j+21*$i], $Ao[$j+21*$i], $Ach4[$j+21*$i], $Aco[$j+21*$i], $Aco2[$j+21*$i];Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Y ya está, ya vemos todos los valores.
Sí que estabas generando los valores, pero no los veías. Ahora usamos $i como índice para acceder a los 21 segundos.
Y ahora que estamos seguros de que se generan esos 42 valores, podemos simplificar el programa, cambiando de nuevo la línea 25 por esta otra:
Using perl Syntax Highlighting
$j, $V, $O, $Ch, $C0, $C02;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
porque esas variables guardan siempre los últimos valores generados.