Hola, tengo algo como esto:
Me creo un
array de dos dimensiones.
Tengo un fichero muy grande, por lo que no quiero cargar todo el fichero en un
array, sino ir creando
arrays pequeños según voy leyendo el fichero (el fichero ya está ordenado por el primer campo).
Según leo el fichero, todos los registros que empiezan por el mismo campo los meto en un
array de dos dimensiones.
Luego lo puedo ordenar.
Pero cuando me toque el momento de totalizar quiero, por ejemplo, poder acceder a la primera línea del
array y de la columna 4.
No sé cómo acceder directamente a una posición del
array es decir: leer
@$array[3,0] o acceder a la última línea del
array @$array[$last_line,4].
Tengo muchos campos y quiero sobreescribir valores sobre la última línea para luego poder imprimir el resumen solo con
print join( '_', @$pinta[$lastline] ), "\n";Es decir: a la última línea del
array le quiero meter el acumulado.
Ejemplo:
@$pinta[$lastline,3]=@$pinta[0,3] reemplazo el valor de la última línea en la columna 3 por el valor de la columna 3 de la primera línea.
¿Hay una variable que me diga cual es el número de líneas del
array de dos dimensiones?
Quizás tengo que construir el
array de 2 dimensiones de otra manera.
Gracias.
Using perl Syntax Highlighting
LINE: while(<LFILE>) {
chomp;
$count++;
my $linea;
@$linea = split( /,/, $_ );
if ( @$anterior[0] eq @$linea[0] )
{
#si la nueva línea es igual a la anterior añado la última al array
push @$hoja, $linea;
}else
{
#si la nueva línea es distinta a la anterior imprimo el array
foreach my $pinta ( sort { $a->[0] <=> $b->[0] } @$hoja ) {
print join( '_', @$pinta ), "\n";
# ¿cómo puedo acceder a una posición del array de dos dimensiones directamente sin tener que recorre el array,
# es decir, quiero por ejemplo acumular info en la línea anterior @$anterior reemplazando :
# @$anterior[3]=@$hoja[0,3]
}
@$anterior = @$linea;
} #while
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4