Un ejercicio que tengo que hacer me exige esto:
Necesito visualizar el contenido de un fichero que cada línea contiene el siguiente formato:
- Código: Seleccionar todo
ID MIN HORA DÍA MES DÍA-SEMANA ORDEN
si el fichero contiene este contenido:
- Código: Seleccionar todo
1 04 16 * * * diario/S12kbd
2 04 16 * * * diario/S14smbfs
3 04 16 * * * diario/S10nfs
4 04 16 * * * diario/S12running-kernel
El resultado que debe producir es la visualización para cada línea del fichero de esta forma, en la salida estándar, vamos en la terminal:
- Código: Seleccionar todo
FICHERO:
EJECUCIÓN: DIARIA/SEMANAL/MENSUAL
HORA:
MINUTO:
DIA:
MES:
DIA DE LA SEMANA:
Si aparece un * en un campo del fichero debe mostrarse la cadena CUALQUIERA en lugar del valor correspondiente.
Por lo que al escribir la orden al Perl debería de mostrar por pantalla una cosa parecida:
- Código: Seleccionar todo
FICHERO: S12kbd
EJECUCIÓN: DIARIA
HORA: 16
MINUTO: 04
DIA: CUALQUIERA
MES: CUALQUIERA
DIA DE LA SEMANA: CUALQUIERA
y así sucesivamente...
Creo, he mirado por ahí, que hay una función llamada format que te muestra los contenidos de un fichero manteniendo un formato. Yo, como buenamente e intentado comprender lo he hecho de esta manera, pero me salen errores por todos sitios:
Using perl Syntax Highlighting
#Abro el fichero para lectura
open(MANEJADOR_FICHERO, "fichero.txt") or die "No se puede abrir el fichero.txt. $!\n";
# Recorro el contenido del fichero
while ($num=<MANEJADOR_FICHERO>)
{
@vector=split / /,$num;
# guardo cada campo de cada linea en un vector
}
format MANEJADOR_FICHERO =
FICHERO:
@vector[6]
EJECUCION:
@vector[0]
HORA:
@vector[2]
MINUTO:
@vector[1]
DIA:
@vector[3]
MES:
@vector[4]
DIA DE LA SEMANA:
@vector[5];
write MANEJADOR_FICHERO;
#Cerramos el fichero
close (MANEJADOR_FICHERO) or die "No se puede cerrar el fichero de planificacion1.txt. $! \n";
open(MANEJADOR_FICHERO, "fichero.txt") or die "No se puede abrir el fichero.txt. $!\n";
# Recorro el contenido del fichero
while ($num=<MANEJADOR_FICHERO>)
{
@vector=split / /,$num;
# guardo cada campo de cada linea en un vector
}
format MANEJADOR_FICHERO =
FICHERO:
@vector[6]
EJECUCION:
@vector[0]
HORA:
@vector[2]
MINUTO:
@vector[1]
DIA:
@vector[3]
MES:
@vector[4]
DIA DE LA SEMANA:
@vector[5];
write MANEJADOR_FICHERO;
#Cerramos el fichero
close (MANEJADOR_FICHERO) or die "No se puede cerrar el fichero de planificacion1.txt. $! \n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Creo, he leído por ahí, que lo del formato lo guarda en un fichero, y yo quiero mostrarlo por la terminal, lo que podría hacer es establecer el formato, guardar todo en un fichero y luego mostrar ese fichero con todas los contenidos ya ordenados en ese formato... Es que no sé cómo se hace, o si hay una forma más sencilla.
Obviamente o no tan obviamente, esto me da un montón de errores; está claro que no tengo ni idea de cómo es... lo que quiero evitar es poner cada campo en una línea recorrida por un for
- Código: Seleccionar todo
for(...)
...
print("HORA: @vector[3]");
print("MINUTO: @vector[2]");
...
Y ASI sucesivamente
Si no se puede hacer de otra manera, habrá que hacerlo así...
NO tengo ni idea en esto, a lo mejor parezco un burro, pero al menos intento sacarlo por mi cuenta, pero cuando ya llego al límite pido ayuda.
Bueno, gracias por la ayuda y espero que me entendáis. Un Saludooo Grande y hermoso.