• Publicidad

Excepcion en campos con split

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

Excepcion en campos con split

Notapor split_code » 2011-07-06 04:10 @215

Hola, tengo un problema: tengo un listado a tratar con esta pinta, guardado en la variable $users:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Administrador            admintivoli              Asistente de ayuda
ASPNET                   Guest                    SUPPORT_388945a0
tecnico                  tmersrvd                 USMCAFEE
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Con el siguiente código, voy metiendo en $campo cada una de las columnas, pero en el caso de "Asistente de ayuda" como tiene espacios, no funciona.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @lista = split(/\s+/, $usrs);
  2. foreach my $campo(@lista){
  3.         print "$campo\n";
  4. }
  5.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

¿Cómo podría hacer para meter en $campo "Asistente de ayuda", con los espacios?
Última edición por split_code el 2011-07-06 04:58 @249, editado 1 vez en total
split_code
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2011-06-08 03:58 @207

Publicidad

Re: Excepcion en campos con split

Notapor explorer » 2011-07-06 05:13 @259

Por el aspecto, parece que las columnas empiezan todas en el mismo sitio, así que podemos usar unpack() para desempaquetar los campos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Modern::Perl;               # somos modernos
  3. use utf8;                       # este programa está escrito en utf8
  4. use autodie;                    # es mejor morir que regresar con deshonor (proverbio Klingon)
  5. use open qw(:utf8 :std);        # la salida y la entrada estándar serán en utf8
  6.  
  7. use File::Slurp;
  8.  
  9. my $users = read_file('kk.txt');        # leemos el fichero
  10.  
  11. my @users = split /\n/, $users;         # lo dividimos en líneas
  12.  
  13. for my $línea (@users) {                # para todas las líneas
  14.  
  15.     my @campos = unpack "(A25)*", $línea;      # desempaquetamos
  16.    
  17.     say '[', join('][', @campos), ']';         # comprobamos
  18. }
  19.  
  20. __END__
  21. [Administrador][admintivoli][Asistente de ayuda]
  22. [ASPNET][Guest][SUPPORT_388945a0]
  23. [tecnico][tmersrvd][USMCAFEE]
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Incluso nos quita los caracteres sobrantes.

En el unpack() estoy indicando que cada $línea se compone de un conjunto (()*) de campos que tienen hasta 25 caracteres (A25) rellenados con blancos, que es justo lo que tenemos.
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: Excepcion en campos con split

Notapor split_code » 2011-07-06 05:25 @267

Cuanto me queda aún por aprender de Perl...

Eres un crack, ¡gracias!
split_code
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2011-06-08 03:58 @207


Volver a Básico

¿Quién está conectado?

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

cron