Using perl Syntax Highlighting
open(DATOS,"entrada.txt"); # Abrimos el fichero "entrada.txt"
@registro=<DATOS>; # Leemos todo el fichero,
# cada línea en un elemento del arreglo
while ( $registro[$x]<2 ) # Mientras la línea $x-ésima contenga un
# valor numérico menor que 2,
{
print $registro [$x]; # pintamos la línea $x-ésima
}
@registro=<DATOS>; # Leemos todo el fichero,
# cada línea en un elemento del arreglo
while ( $registro[$x]<2 ) # Mientras la línea $x-ésima contenga un
# valor numérico menor que 2,
{
print $registro [$x]; # pintamos la línea $x-ésima
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Hummm... se ven los problemas enseguida, ¿no?
* ¿Cuánto vale $x? ¿Dónde se inicializa? ¿Para qué sirve su valor? ¿Dónde cambia?
* ¿Es seguro que en las líneas hay valores numéricos? ¿No decías que contenían nombres?
* Si quieres imprimir los nombres, ¿por qué hay un bucle con una condición?
Esta es una forma de mostrar en pantalla los nombres almacenados en el fichero:
Using perl Syntax Highlighting
open(DATOS,'<entrada.txt') # Abrimos el fichero en lectura
or die "ERROR: No pude abrir el fichero: $!\n"; # O morimos en el intento
my @registro = <DATOS>; # Lo leemos entero
for my $nombre (@registro) { # Para cada $nombre guardado en el @registro
print $nombre; # Lo pintamos
}
close(DATOS); # Cerramos el fichero
or die "ERROR: No pude abrir el fichero: $!\n"; # O morimos en el intento
my @registro = <DATOS>; # Lo leemos entero
for my $nombre (@registro) { # Para cada $nombre guardado en el @registro
print $nombre; # Lo pintamos
}
close(DATOS); # Cerramos el fichero
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Naturalmente, queda más corto haciéndolo más directo:
Using perl Syntax Highlighting
open(DATOS,'<entrada.txt') # Abrimos el fichero en lectura
or die "ERROR: No pude abrir el fichero: $!\n"; # O morimos en el intento
while (my $nombre = <DATOS>) { # Leemos un $nombre cada vez, hasta fin de fichero
print $nombre; # Lo pintamos
}
close(DATOS); # Cerramos el fichero
or die "ERROR: No pude abrir el fichero: $!\n"; # O morimos en el intento
while (my $nombre = <DATOS>) { # Leemos un $nombre cada vez, hasta fin de fichero
print $nombre; # Lo pintamos
}
close(DATOS); # Cerramos el fichero
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Vale, ya tenemos los nombres, uno a uno. Solo queda recordar las veces que sale cada uno de ellos. Por ejemplo, con un hash:
$cuantas_veces_sale{$nombre}++;
Ya solo te queda sacar la información almacenada para saber %cuantas_veces_sale cada $nombre.