Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Comodín

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mie Jun 11, 2008 3:52 pm
Kiloko
Perlero Adicto
Perlero Adicto
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
Comodín Responder citando

Una pregunta algo básica, pero tengo mi código

Perl:
use POSIX;
#**************************************************
my $AYER = strftime("%Y%m%d", localtime(time - 86400));
#**************************************************

En donde $AYER, me da la fecha, pero necesito buscar X archivos y
necesito que $AYER2 = "ejemplo_$AYER.dat" ;
donde (*) son todos los demás números, o letras que le sigan después de ahí.

Se podría hacer un while, definiendo los rangos, de esos espacios, pero no existe algún comodín que me permita hacer esto; ¿cómo se haría normalmente en una terminal?

Saludos
Mensaje Mie Jun 11, 2008 4:07 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

Usa la función glob().

Ejemplo: http://perlenespanol.baboonsoftware.com/foro/viewtopic.php?t=2563
Mensaje Mie Jun 11, 2008 4:37 pm
Kiloko
Perlero Adicto
Perlero Adicto
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
Responder citando

Aquí una duda, glob() aplica para POSIX porque sale un error...

Código:
File::Glob version 20080610* required--this is only version 1.05 at /usr/share/perl/5.8/Exporter/Heavy.pm line 107.
BEGIN failed--compilation aborted at sftp.pl line 6.
Mensaje Mie Jun 11, 2008 4:49 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

Humm... yo he dicho glob(). No he dicho nada de File::Glob.
Mensaje Mie Jun 11, 2008 5:00 pm
Kiloko
Perlero Adicto
Perlero Adicto
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
Responder citando

Algo así

Perl:
use POSIX;
#**************************************************
my $AYER = strftime("%Y%m%d", localtime(time - 86400));

my $file = glob("ejemplo_$AYER*.pm");


Pero mi duda recae en que esto va a buscar y traer un archivo, por lo que necesito usar

Perl:
my $remote = "ejemplos/ups/sql/$file";
my $local = "/home/sql/$file";

$sftp->get($remote,$local)or die "No se bajar el archivo";
#$sftp->message."\n";
Mensaje Mie Jun 11, 2008 6:01 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

No, los comodines no te sirven de nada con el protocolo HTTP.

Tienes varias opciones. Una de ellas, si le puedes pedir un listado de ficheros al servidor web, puedes luego ir pidiendo fichero por fichero.
Mensaje Jue Jun 26, 2008 12:54 pm
Kiloko
Perlero Adicto
Perlero Adicto
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
Responder citando

Hummmm Sí, ya me di cuenta, opté por hacer un proceso *.sh y comprimir todo con gzip, para después usar el proceso de extracción dirigido solo a ese archivo...

Saludos
Mensaje Jue Jun 26, 2008 2:43 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

Sería interesante ver ese código shell...
Mensaje Vie Jun 27, 2008 11:27 am
Kiloko
Perlero Adicto
Perlero Adicto
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
Responder citando

bash:
#!/usr/bin/ksh
. $HOME/.profile
export COLECTORHOME=/export/home/thread
export AYER=`perl $COLECTORHOME/bin/ayer2.pl `;
export prefix=pruebas
cd ${COLECTORHOME}/historico/

echo ${AYER}0
gzip ${prefix}${AYER}0*
tar -cvf Tar_PRUEBAS_LAT_${AYER}0.tar  ${prefix}${AYER}0*
rm ${prefix}${AYER}0*

echo ${AYER}1
gzip ${prefix}${AYER}1*
tar -cvf Tar_PRUEBAS_LAT_${AYER}1.tar  ${prefix}${AYER}1*
rm ${prefix}${AYER}1*

echo ${AYER}2
gzip ${prefix}${AYER}2*
tar -cvf Tar_PRUEBAS_LAT_${AYER}2.tar  ${prefix}${AYER}2*
rm ${prefix}${AYER}2*
gzip *.tar
echo Termino


Y listo, con eso comprimo todo en 3 archivos por comodidad y uso así lo hago en vez de uno solo... y con la función de Perl ayer.pl

Perl:
use POSIX;
#**************************************************
my $AYER = strftime("%Y%m%d", localtime(time - 86400));
#**************************************************
print "$AYER";


establezco la fecha. Y listo... por el momento está funcionado bien...

Very Happy
Mensaje Vie Jun 27, 2008 12:23 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

Desde luego, es factible hacerlo todo en Perl.

Y si solo estás usando Perl para calcular el día de ayer, yo hubiera usado en su lugar el comando date(1) del sistema.
Mensaje Lun Jul 28, 2008 9:40 am
Kiloko
Perlero Adicto
Perlero Adicto
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
Responder citando

Suena factible, pero lo meto en un programa aparte por que hay veces que necesito modificar la fecha, y así solo modifico ese archivo, Very Happy
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group