Lun May 05, 2008 11:10 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
Sería interesante saber qué pasaba...
En cuanto a lo de leer el interior, no veo problema si, a) el fichero se puede leer, b) se sabe la posición de lo que quieres leer, c) el formato de lectura (texto, binario, fijo, etc.) d) el significado de lo que lees. Por ejemplo, está claro qué significa 20080504, pero, ¿qué significa 003? |
|
|
|

Mar May 06, 2008 3:51 am
|
 |
Reina
Perlero Nuevo

|
Registrado: 25 Abr 2008
Mensajes: 18
|
|
|
|
|
Buenos días.
La verdad es que no sé bien lo que pasaba, puede ser que la respuesta esté en los permisos que tenía sobre el archivo, pero ya está solucionado
Te detallo los apartados que me planteas:
a) el fichero se puede leer
b) no sé a qué te refieres con la posición que quiero leer
c) el formato de la lectura es en modo numérico
d) el significado de lo que quiero leer es 2008 -> año, 05 -> mes, 04 -> día, el 003 corresponde a la revisión del antivirus, pero eso no me interesa, ni tampoco el texto que viene antes de CurDefs=
Supongo que tendré que leer el archivo, coger la fecha, pasarla a formato ddmmaaaa y comparar, ¿no? pero no sé cómo se hace.
¡¡Gracias!! |
|

Mar May 06, 2008 4:31 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
Con lo de la posición me refiero a en qué lugar se encuentra lo que quieres leer dentro del fichero.
Lo del formato numérico nunca lo había oído. O es alfanumérico o binario.
Para leer el fichero tienes varios ejemplos en estos foros. Luego tienes que sacar la fecha, que lo puedes hacer con una expresión regular, y luego, para hacer la comparación, pues puedes usar la función timegm() o timelocal() del módulo Time::Local. De esa manera lo estarás pasando a número de segundos desde el Epoch, y podrás hacer la comparación como antes. |
|

Mar May 06, 2008 5:08 am
|
 |
Reina
Perlero Nuevo

|
Registrado: 25 Abr 2008
Mensajes: 18
|
|
|
|
|
¡¡Ah!! El contenido del fichero .dat es el siguiente:
| Código: |
[DefDates]
CurDefs=20080505.003
LastDefs=20080504.003 |
Así que a mi lo que me interesa es sólo el medio de la segunda línea.
Con respecto a lo del formato, tienes razón, es alfanumérico, que se me va un poco la cabeza
Gracias. |
|

Mar May 06, 2008 6:26 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
| Perl: | #!/usr/bin/perl -l
use warnings;
use strict;
use Time:: Local;
my $fecha_ultima_actualizacion;
open my $fh, q{< }, 'kk.txt' or die;
my $fichero;
{ # Leemos el fichero entero en una variable escalar
# Para eso, indefinimos el valor de la variable $/
# para que deje de leer por líneas
local $/ = undef;
$fichero = < $fh>;
}
close $fh;
if ( my ($anno, $mes, $dia) = $fichero =~ /CurDefs= (.... )(.. )(.. )/ ) {
$fecha_ultima_actualizacion = timelocal (0, 0, 0, $dia, $mes- 1, $anno- 1900);
}
print 'Diferencia entre la última fecha de actualización y la actual:';
print time() - $fecha_ultima_actualizacion, ' segundos';
|
|
|

Mar May 06, 2008 7:10 am
|
 |
Reina
Perlero Nuevo

|
Registrado: 25 Abr 2008
Mensajes: 18
|
|
|
|
|
Esa manera ya la había intentado, pero el problema es que mi archivo no es un .txt, sino un .dat y así no me lo abre, me da error...
Estaba pensando abrirlo en plan open(FICHERO, "dinfo.dat") pero no sé bien cómo hacerlo. ¿Existe alguna otra forma?
¡¡Gracias!! |
|
Mar May 06, 2008 7:18 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
Me da igual que sea .txt o .dat. Tu has dicho antes que es un fichero alfanumérico, así que lo leo de esa manera. Sólo tienes que cambiar mi 'kk.txt' por tu 'dinfo.dat'.
Y cuando te salga un mensaje de error, ponlo aquí, porque sino, no sabremos cómo ayudarte. |
|
Mar May 06, 2008 7:46 am
|
 |
Reina
Perlero Nuevo

|
Registrado: 25 Abr 2008
Mensajes: 18
|
|
|
|
|
Perdona por darte tanto la lata, tienes toda la razón, lo que me ha pasado es que tenía que poner la ruta completa.
Funciona a la perfección.
Gracias por todo. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|