• Publicidad

Función que me permita abrir un directorio

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

Función que me permita abrir un directorio

Notapor mariomb19 » 2012-05-04 11:23 @516

Buenas tardes, un cordial saludo. Tengo una duda: no encuentro la función que me permita abrir un directorio de archivos para poder manejarlos globalmente. Actualmente lo manejo uno por uno así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( MIFICH, "/home/rocco/dir2/fi_sir_20120301_20120308.txt" ) || die "lo siento, no puedo encontrar fichero.txt\n";
  2.  
  3. my $archivo = "fi_sir_";
  4.  
  5. if ( $archivo =~ m/fi_sir_/ ) {
  6.  
  7.     while (<MIFICH>) {
  8.  
  9.         $cadena = "$_";
  10.  
  11.         @cadena = split( /\|\s*/,, $cadena );
  12.         print "\n";
  13.         print $cadena[1];
  14.     }
  15.  
  16. }
  17. else {
  18.  
  19.     print "enviar correo";
  20. }
  21.  
  22. close(MIFICH);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¿Qué función me permite abrir el directorio y compararlos?

Gracias.

Quiero una función como la de passthru en PHP o función equivalente en Perl.
Última edición por explorer el 2012-05-04 13:33 @606, editado 1 vez en total
Razón: Formateado de código con Perltidy y poner marcas Perl
mariomb19
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2012-04-30 09:39 @444

Publicidad

Re: Función que me permita abrir un directorio

Notapor explorer » 2012-05-04 13:33 @606

Debes usar opendir(), readdir() y closedir(). Más información en perldoc -f opendir, perldoc -f readdir, perldoc -f closedir.

Una función que ejecute código externo, puedes hacerlo con exec(), system() y qx(), dependiendo de si no quieres que regrese el control al programa que llama, o sí, o si quieres obtener además el resultado de la ejecución.

Más información en perldoc -f exec, perldoc -f system, perldoc -f qx, y perldoc perlop.
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

Re: Función que me permita abrir un directorio

Notapor mariomb19 » 2012-05-04 13:44 @614

Muchas gracias, de verdad, pues no conozco Perl y es de gran ayuda tus conocimientos.
mariomb19
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2012-04-30 09:39 @444

Re: Función que me permita abrir un directorio

Notapor mariomb19 » 2012-05-04 14:23 @641

Amigo: pero tengo otro problema. En mi directorio tengo dos tipos de archivos:

el primero fi_sir_20100708_20100715.txt en cual varía por fecha, y son muchos.

Y otro sapfi_rechazo_09082010_HCM_1420.txt.

Ya los veo todos mediante el dir, pero ¿Con qué función los separo ya que cada archivo tiene que ir a una base de datos diferente?
mariomb19
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2012-04-30 09:39 @444

Re: Función que me permita abrir un directorio

Notapor explorer » 2012-05-04 14:30 @645

También puedes usar glob():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @archivos_fi    = glob("fi_sir_*.txt");
my @archivos_sapfi = glob("sapfi_rechazo_*.txt");
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

Re: Función que me permita abrir un directorio

Notapor mariomb19 » 2012-05-07 09:19 @430

Buenas, amigo. He intentado varias maneras, pero nada. Tengo una gran cantidad de archivos que quiero validar primero separándolos, por nombre:

fi_sir_*.txt, y el otro
sapfi_rechazo_*.txt

La duda: ¿cómo logro abrir y separar los dos archivos, para validarlos todos y poder cargar cada variable a base de datos?

Con la función glob() la abro pero no logro validar cada campo de los archivos.
mariomb19
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2012-04-30 09:39 @444

Re: Función que me permita abrir un directorio

Notapor explorer » 2012-05-07 09:25 @434

Si nos enseñas el código que tienes, te podemos decir dónde está el problema...

Por cada archivo, lo puedes abrir, leer por líneas, y separar los campos con split().
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

Re: Función que me permita abrir un directorio

Notapor mariomb19 » 2012-05-07 09:45 @448

Disculpa. Aquí está:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. $dirname = "/home/rocco/dir2/";
  4.  
  5. opendir( DIR, $dirname ) || die "Error in opening dir $dirname\n";
  6.  
  7. while ( ( $filename = readdir(DIR) ) ) {
  8.     $fisir  = "fi_sir_.*txt";
  9.     @fi_sir = glob("$fisir");
  10.     if ( $filename = "$fisir" ) {
  11.         print "@fi_sir\n";
  12.     }
  13.     else {
  14.         print "no hay";
  15.     }
  16.  
  17. }
  18.  
  19. closedir(DIR);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Quiero que me habrá solo los archivos fi_sir_*.txt.
Última edición por explorer el 2012-05-07 10:05 @461, editado 1 vez en total
Razón: Formateado de código con Perltidy y poner marcas Perl
mariomb19
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2012-04-30 09:39 @444

Re: Función que me permita abrir un directorio

Notapor explorer » 2012-05-07 10:14 @468

Una de las posibles formas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use warnings;
  3.  
  4. while (my $archivo = glob "/home/rocco/dir2/fi_sir_*.txt") {
  5.     open my $FH, '<', $archivo or die "ERROR: No se pudo abrir [$archivo]: $!\n";
  6.  
  7.     while (my $linea = readline $FH) {
  8.         my @cadena = split /\|\s*/, $linea;
  9.         print $cadena[1];
  10.     }
  11.  
  12.     close $FH;
  13. }
  14.  
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

Re: Función que me permita abrir un directorio

Notapor mariomb19 » 2012-05-07 10:32 @481

Muchas gracias.
mariomb19
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2012-04-30 09:39 @444


Volver a Básico

¿Quién está conectado?

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