• Publicidad

Problema con fichero para bajar de la red... con Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problema con fichero para bajar de la red... con Perl

Notapor dasech » 2007-11-26 12:39 @569

Hola, que tal anteriormente ya había escrito por un problema en un script de Perl:

Código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use LWP::Simple;
use POSIX;
mirror("http://www.precios.com.mx/pip-files//MatrizDiferencias/PiP_MV20071113_2.zip","$fichero_a_bajar1"); #baja el archivo con la fecha de hoy
system('unzip', 'PiP_MV20071123.zip'); # Al bajar archivo de la red lo descomprime
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Mi problema es que diariamente baja el mismo archivo, o sea, del 13 del noviembre del 2007 y no se actualiza. Tiene que estar bajando el archivo actualizado, es decir del 14 del noviembre del 2007, 15 del noviembre 2007, 16 de noviembre 2007, etc.

Cómo hago para modificar el script y se actualice el día para bajar el fichero actualizado de la red.


Gracias. espero su ayuda 8)
dasech
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2007-11-07 12:46 @574

Publicidad

Notapor explorer » 2007-11-26 13:26 @601

¿Ese es el programa completo? Creo que faltan líneas... y... ¿qué variable es esa que se llama $fichero_a_bajar1?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

ayuda

Notapor dasech » 2007-11-26 13:46 @615

explorer escribiste:¿Ese es el programa completo? Creo que faltan líneas... y... ¿qué variable es esa que se llama $fichero_a_bajar1?


Este es el codigo completo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use LWP::Simple; #Llama a la libreria LWP
use POSIX; #Llama a la Libreria POSIX
my $hoy = strftime("%Y%m%d",localtime);
my $fichero_a_bajar1 = "PiP_MV$hoy_2.zip";
my $fichero_a_bajar2 = "PiP_MVI$hoy_2.zip";
my $fichero_a_bajar3 = "PiP_MVD$hoy_2.zip";
my $fichero_a_bajar4 = "PiP_MVR$hoy_2.zip";
mirror("http://www.precios.com.mx/pip-files//MatrizDiferencias/PiP_MV20071113_2.zip","$fichero_a_bajar1"); #baja el archivo con la fecha de hoy
system('unzip', 'PiP_MV20071123.zip'); # Al bajar archivo de la red lo descomprime
mirror("http://www.precios.com.mx/pip-files//MatrizOmegaH/PiP_MVI20071113_2.zip","$fichero_a_bajar2"); #baja el archivo con la fecha de hoy
system('unzip', 'PiP_MVI20071123.zip');# Al bajar archivo de la red lo descomprime
mirror("http://www.precios.com.mx/pip-files/OtrosArchivos/psilva/PiP_MVD20071113_2.zip","$fichero_a_bajar3"); #baja el archivo con la fecha de hoy
system('unzip', 'PiP_MVD20071123.zip');# Al bajar archivo de la red lo descomprime
mirror("http://www.precios.com.mx/pip-files//MatrizAlfaRepoH/PiP_MVR20071113_2.zip","$fichero_a_bajar4"); #baja el archivo con la fecha de hoy
system('unzip', 'PiP_MVR20071123.zip');# Al bajar archivo de la red lo descomprime
die "Error No Se Pudo Descargar Fichero De La Red Checa La Conexion\n" # Si hay problemas con la Red nos manda un mensaje
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Solo me cambia la fecha del zip pero no me descarga el archivo actualizado... ¿cómo le hago para que diariamente me baje el archivo del día que le corresponde ya que la página y el archivo (PiP_MVR 20071123.zip) se actualizan diariamente? Espero Me ayuden.
dasech
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2007-11-07 12:46 @574

Notapor explorer » 2007-11-26 18:54 @829

El problema es el siguiente:
* Tu calculas el día de hoy y lo guardas en su variable $hoy.
* Luego, creas los nombres de los ficheros a bajar, en función de ese día, de esta manera: my $fichero_a_bajar1 = "PiP_MV$hoy_2.zip";
y ahí está el error: Perl cree que lo que quieres usar es la variable $hoy_2.

Resulta que el guión bajo puede formar parte de los nombres de las variables, por lo que Perl piensa que es otra variable, distinta de la tuya $hoy.

Esto no te pasaría si pusieras use strict; al principio del programa :-)

Para solucionarlo, pon:
my $fichero_a_bajar1 = "PiP_MV${hoy}_2.zip";Así le decimos a Perl cómo exactamente se llama nuestra variable.

Hay otro fallo: cambias el nombre del fichero bajado, pero no cambias el nombre del fichero que se baja. Siempre es el mismo.

Yo he hecho este programa (no probado), que simplifica un poco tu problema.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use LWP::Simple;
use POSIX;
use strict;

my $URL = 'http://www.precios.com.mx';
my @sitios = qw(
    pip-files/MatrizDiferencias
    pip-files/MatrizOmegaH
    pip-files/OtrosArchivos/psilva
    pip-files/MatrizAlfaRepoH
);

my @tipos = ( '', 'I', 'D', 'R' );

my $hoy = strftime("%Y%m%d",localtime);

foreach my $i ( 0 .. 3 ) {

    my $fichero  = "PiP_MV$tipo[$i]${hoy}_2.zip";     # Componemos el nombre

    mirror("$URL/$sitios[$i]/$fichero", $fichero);    # Baja el archivo con la fecha de hoy

    system('unzip', $fichero);                        # Al bajar archivo de la red lo descomprime
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor dasech » 2007-11-26 22:59 @999

Muchas gracias, explorer. Ya comprendí el error del script. Solo cambiaba la fecha pero nunca el fichero. con esto ya se baja y descomprime listo para agregarlo a una base de datos :P Gracias de nuevo. Saludos.
dasech
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2007-11-07 12:46 @574


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados