Empecé con Perl leyendo el libro "sam teach yourself Perl in 21 days"... bueno... lo de los 21 días no es tan así, al menos para mí. El primer trabajo que me planteé es el siguiente:
Desde un archivo externo (en este caso un txt) obtener estadísticas simples: media, moda, mínimo, máximo, etc.
Me surge un problema:
Quisiera guardar el archivo en una matriz y para eso hago lo siguiente:
Using perl Syntax Highlighting
#!/usr/local/bin/perl -w
open (DATOS, 'misdatos.txt');
@archivo = <DATOS>;
close(DATOS);
open (DATOS, 'misdatos.txt');
@archivo = <DATOS>;
close(DATOS);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
El problema está en que por ejemplo, si deseo llamar al elemento (1,2) de la matriz:
Using perl Syntax Highlighting
Solo me muestra la primera fila, como si le dijera
Using perl Syntax Highlighting
Mi solución es "vaciar" cada fila de @archivo en un nuevo conjunto de arreglos, por ejemplo de la siguiente forma:
Using perl Syntax Highlighting
@row1="";
@row2="";
@row3="";
foreach $single (@archivo){
$c++;
($row1[$c],$row2[$c],$row3[$c]) = split "\n", $single;
}
@row2="";
@row3="";
foreach $single (@archivo){
$c++;
($row1[$c],$row2[$c],$row3[$c]) = split "\n", $single;
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Pero lo que logro es que en @row1 coloque todo el arreglo @archivo. Y si hago el cambio
Using perl Syntax Highlighting
($row1[$c],$row2[$c],$row3[$c]) = split " ", $single;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
En @row1 coloca toda la primera columna, pero sin ninguna separación entre los datos y lo mismo con @row2 y @row3.
Agradecería me iluminaran un poco... pues una vez que tenga los datos en arreglos, creo que es más fácil hacer lo que me propuse.
Si de alguna forma se pudiera sistematizar aún más el programa, sería lo óptimo.
Me refiero a que el programa no dependa del archivo que tengo, para que así, si quiero hacer lo mismo con otro archivo, no tenga que reescribir las sentencias. (eso de todas maneras es un extra... me quedo feliz con una solución para lo que planteé primero).
Muchas gracias