• Publicidad

Seleccionar información de un archivo en Perl

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

Seleccionar información de un archivo en Perl

Notapor decaro6802 » 2012-05-15 21:41 @945

Hola, buenas noches:

Necesito saber cómo puedo seleccionar información que empieza con dos signos de mayor y además que empiece con inst. ¿Cómo le puedo hacer en Perl?
decaro6802
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-04-10 18:45 @823

Publicidad

Re: Seleccionar información de un archivo en Perl

Notapor explorer » 2012-05-16 03:51 @202

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (<$FH>) {
    if (/^>>inst/) {
        # procesar la línea almacenada en $_
    }
}
Coloreado en 0.002 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: Seleccionar información de un archivo en Perl

Notapor decaro6802 » 2012-05-17 22:10 @965

Ok, gracias, de hecho ya lo pude resolver, pero ahora tengo otro problema.

Me están enviando un archivo plano con extensión csv (separado por comas), pero en la columna 2 está el problema ya que esta información la estoy pasando a un archivo plano con columnas fijas de 100 posiciones y resulta que viene de 101 posiciones y esta me está dando problemas para leer el archivo.

Cómo puedo hacer en Perl para que nada más contemple 100 posiciones en la salida ya que nada más me interesan las 100 posiciones.

Espera de su pronta respuesta quedo a sus órdenes. Anexo archivos que son los siguientes:

Resultado.txt (archivo del resultado de la ejecución del Perl)
Archivo.csv (cómo me están enviando la información).
Programa.pl (Programa Perl).

Saludos
Adjuntos
Resultado.txt
(2.35 KiB) 32 veces
Programa.pl.txt
(227 Bytes) 31 veces
Archivo.csv
(1.39 KiB) 36 veces
decaro6802
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-04-10 18:45 @823

Re: Seleccionar información de un archivo en Perl

Notapor explorer » 2012-05-18 04:02 @210

$campo2 = substr $campo2, 0, 100;

Más información en perldoc -f substr
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: Seleccionar información de un archivo en Perl

Notapor decaro6802 » 2012-05-18 11:23 @516

Hola, buenos días:

Ya intenté hacerlo pero el resultado no es el esperado, ¿cómo puedo aplicarlo en el programa que le pasé? Y aprovechando de una vez todos los campos, ¿cómo le puedo hacer? Son 7 campos que vienen en el archivo Excel que le envíe, los dos primeros deben de ser de 100 y los demás de 28.

En espera de su pronta respuesta, quedo a sus órdenes.

Saludos.
decaro6802
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-04-10 18:45 @823

Re: Seleccionar información de un archivo en Perl

Notapor explorer » 2012-05-18 12:49 @575

Con este programa ya sale bien.

Solo hubo que agregar la precisión al printf.

Tienes más información en perldoc -f sprintf

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Formateo de campos CSV.
  4. # Joaquín Ferrero, 20120518
  5. #
  6. use strict;
  7. use warnings;
  8. use diagnostics;
  9.  
  10. binmode STDOUT, ':crlf';   # salida de las líneas en modo MSDOS
  11.  
  12. while (my $linea = readline) {
  13.  
  14.     chomp $linea;
  15.     $linea =~ s/"//g;
  16.     next if $linea !~ /^(?:Ins|>>)/;
  17.  
  18.     my @campos = split /,/, $linea;
  19.     next if @campos < 7;
  20.  
  21. # estas líneas no son necesarias porque se indica la "precisión" en el printf,
  22. # que se encargará de recortar los caracteres sobrantes
  23. #    for my $campo (@campos[0,1]) {
  24. #       $campo = substr $campo, 0, 100;
  25. #    }
  26. #    for my $campo (@campos[2..6]) {
  27. #       $campo = substr $campo, 0, 28;
  28. #
  29. #    }
  30.  
  31.     printf "%-100.100s%-100.100s%-28.28s%-28.28s%-28.28s%-28.28s%-28.28s*\n", @campos;
  32. }
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


Volver a Básico

¿Quién está conectado?

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