Yo veo varios problemas:
* El primer
if está mal. No estás haciendo una comparación, sino una asignación, por lo que siempre se ejecutará
$mes = 1* Me sobra una llave de apertura y una llave de cierre
Otros detalles:
* Si usas Perl como si fuera un script shell, casi mejor usa un script shell.
En cuanto al programa, se puede simplificar mucho, ya que las direcciones a las imágenes son fácilmente reproducibles.
Esta es mi solución:
Using perl Syntax Highlighting
#!/usr/bin/perl
#
# Descripción:
# Bajar las imágenes de infrarojo del satélite GOES
# para un año determinado, desde la web de NOAA.
# Se añade la extensión '.jpg' a los ficheros bajados.
# Antes de bajar un fichero, se comprueba que no haya sido bajado antes.
#
# Argumentos
# El año se pasa como primer argumento.
#
# Joaquín Ferrero, julio 2008.
#
use LWP
::Simple;
use strict
;
use warnings
;
# Constantes
my $URL_BASE = 'http://www.ncdc.noaa.gov/gibbs/image/GOE-12/IR';
my $IMG_FMT = '%04d-%02d-%02d-%02d';
$|++;
# Año de bajada
if ( !@ARGV ) {
die "Uso: $0 <año a bajar>\n";
}
my $anno = $ARGV[0
];
if ( $anno < 100
) {
$anno += 2000;
}
# Bajar los imágenes
foreach my $mes ( 1
.. 12
) {
foreach my $dia ( 1
.. 31
) {
foreach my $hora ( 0
, 3
, 6
, 9
, 12
, 15
, 18
, 21
) {
my $imagen = sprintf $IMG_FMT, $anno, $mes, $dia, $hora;
print "Bajando fichero $imagen... ";
mirror
( "$URL_BASE/$imagen", "$imagen.jpg" );
print "Ok\n";
}
}
}Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
La salida es:
- Código: Seleccionar todo
explorer@portatil:~/Documents/Desarrollo> ./ir_goes.pl
Uso: ./ir_goes.pl <año a bajar>
explorer@portatil:~/Documents/Desarrollo> ./ir_goes.pl 2004
Bajando fichero 2004-01-01-00...
Bajando fichero 2004-01-01-03...
Bajando fichero 2004-01-01-06...
Bajando fichero 2004-01-01-09...
Bajando fichero 2004-01-01-12...
Bajando fichero 2004-01-01-15...