Hola explorer!!!
Perdona mi ignorancia pero es que soy nueva en este mundillo, y los scripts que estoy intentando modificar ya estaban creados...
Ya me había movido por los distintos foros viendo las respuestas pero no me convencian (o es que no e sabido utilizarlas).
Te voy a explicar un poco lo que hace mi script y para qué necesito calcular la fecha del día anterior al que recojo x parámetro:
Yo recibo un fichero con unos datos. El fichero debo modificarlo y añadirle al final el campo
Fecha de implantación que es la del día anterior al que recibo el fichero.
Using perl Syntax Highlighting
#!/usr/bin/perl
## ESTE METODO LEE El ARCHIVO CON LOS DATOS QUE NOS ENVIAN EN LA RUTA ESPECIFICADA
## Y LO ALMACENA EN UNA VARIABLE
sub lee_fichero_temporal
{
$fichero="/ruta/Implantaciones_Realizadas_AIM_$fecha.txt";
open(TEMP
,$fichero) or die "No puedo abrir el archivo - $!";
@array_temporal=<TEMP>;
close(TEMP
);
#BORRAMOS EL ARCHIVO DESPUES DE HABERLO LEIDO
unlink $fichero;
return(@array_temporal);
}
#METODO PARA RECOGER LA FECHA INTRODUCIDA POR PARAMETRO
sub introduce_fecha
{
if ($#ARGV != 0
)
{
print("No has introducido una fecha de implantacion\n");
}
else
{
$fecha =$ARGV[x
];
}
return $fecha;
}
# PROGRAMA PRINCIPAL
# EJECUTO EL METODO INTRODUCE_FECHA
$fecha = introduce_fecha
;
# LEO FICHERO (EJECUTA EL METODO LEE_FICHERO_TEMPORAL)
@array_temporal = lee_fichero_temporal
;
#ABRO NUEVO FICHERO CON FECHA DIARIA EN EL NOMBRE
open(NUEVO_FICHERO
,">/ruta/IMPLANTACIONES_REALIZADAS_AIM_$fecha.txt") or
die "No puedo abrir el archivo - $!";
#SI NO HAY NADA DENTRO DEL ARRAY, EL FICHERO ESTA VACIO ASI QUE NO HAGO NADA
if ($#array_temporal eq -1
) {
}
else
{
#IMPRIMO LA CABECERA CON EL FORMATO QUE NOS SOLICITAN
print NUEVO_FICHERO
"HERRAMIENTA;CODIGO_PETICION;FECHA_IMPLANTACION;\n";
### SI EL FICHERO TIENE DATOS ENTONCES RECORRO EL ARCHIVO POR LINEA
foreach $linea(@array_temporal) {
#ELIMINO LA TERMINACION DE LA CADENA
chomp($linea);
#QUITO ESPACIOS DE LA LINEA
$linea =~ s/\s+//g;
#########AKI LLEGA EL PROBLEMA YA QUE ME FALTA RECOGER EN LA VARIABLE $fechaimpla el dia anterior al que tengo en $fecha x eso kiero restarle un dia, no sii es la mejor forma...... si sabes otra te agradeceria que me ayudases. De todas formas seguire probando #####
#ALMACENO LOS DATOS EN UNA VARIABLE
$linea_nueva ="AIM;$linea;$fechaimpla;\n";
#IMPRIMO La Linea nueva (NO TIENE ESPACIOS Y ESTA SEPARADA POR ;)
print NUEVO_FICHERO
"$linea_nueva";
}
}
### CERRAMOS EL FICHERO NUEVO
close(NUEVO_FICHERO
);Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
De todas formas intenté probar un código:
Using perl Syntax Highlighting
use Date
::Manip;
Date_Init
( "Language=Spanish", "DateFormat=non-US" );
$fecha = DateCalc
("29/11/2005", "+ 3 dias laborales");
print UnixDate
($fecha,"%d/%m/%Y");Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Este módulo está bien, pero no funcionará a menos que lo parcheéis según pongo aquí. Una vez hecho eso, es una delicia que te sume fechas, laborales o no.
Que es tuyo y en realidad no puedo parchearme nada ya que es una máquina del curro y no puedo.
Muchas gracias de antemano :)