Perl en Español

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

split

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mar Abr 08, 2008 4:24 pm
xagutxu_perez
Perlero Nuevo
Perlero Nuevo
Registrado: 04 Abr 2008
Mensajes: 43
split Responder citando

¡Hola de nuevo!

Gracias a todos, porque esta web me está sirviendo de gran ayuda. Os lo estimo mucho.

La duda que tengo ahora es cómo utilizar "split" sin que "coma" nada; esto es, si tengo una cadena como ésta:

Perl:
$cadena = "ladudaquetengoahoraesusarbienelsplit";


¿Cómo puedo hacer para crear un array con elementos que empiecen en "a", las 'a' incluidas? Esto es:

Perl:
@array_cadena = qw( l adud aquetengo ahor aesus arbienelsplit";


Si pongo @array_cadena = split (/a/, $cadena), ¡me come todas las 'a'!

¿Es posible hacer esto?

Gracias...
Mensaje Mar Abr 08, 2008 5:13 pm
xagutxu_perez
Perlero Nuevo
Perlero Nuevo
Registrado: 04 Abr 2008
Mensajes: 43
Responder citando

Bueno, ya me respondo yo...

He encontrado la solución en una web: basta con poner paréntesis en la parte / / del split. Voilà...!
Mensaje Mar Abr 08, 2008 5:17 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4140
Ubicación: Valladolid, España
Responder citando

Los paréntesis no te sirven... lo que hacen es crear nuevos elementos en el array, con esas 'a' como elementos separados. Los paréntesis sirven para guardar los delimitadores aparte de los elementos divididos.

Esta es una solución... aunque... un poco tramposa...

Perl:
print join " a", split "a", "ladudaquetengoahoraesusarbienelsplit"'; # l adud aquetengo ahor aesus arbienelsplit
Mensaje Sab Abr 12, 2008 9:09 am
Jenda
Perlero Frecuente
Perlero Frecuente
Registrado: 29 Oct 2007
Mensajes: 106
Ubicación: Praga, Republica Checa
Responder citando

Perl:
@array_cadena = ($cadena =~ /((?:^.|a)[^a]*)/g);
print join(',', @a);


Si no hay delimitadores no usa split(), usa regexps.
Mensaje Mar Jul 08, 2008 2:50 pm
chechoman
Perlero Nuevo
Perlero Nuevo
Registrado: 02 Jul 2008
Mensajes: 19
Responder citando

Hola, yo tengo un rollo similar: tengo que hacer una comparación sha1 de un archivo zip que descargo. Lo que sucede es que el sitio de donde lo descargo colocan el sha1 dentro del nombre del mismo archivo zip y éste queda algo similar así:
Código:
Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx


Si nos fijamos bien el nombre del archivo está separado por 4 puntos, el cual pensé sería el carácter delimitador, yo estoy tratando de hacer un script que me lea el nombre del archivo y meta ese nombre en una cadena, la separe y me tome solo en cuenta 00000aaaaaaabbb00000 (este número siempre cambia pero esta parte es la que trato de leer) Una vez separada meta este valor en una variable para yo poder compararlo con el sha1 que ya logro sacar.

He estado usando split pero no logro llegar a los caracteres que necesito.
Mensaje Mar Jul 08, 2008 3:04 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4140
Ubicación: Valladolid, España
Responder citando

Perl:
$nombre_del_fichero = 'Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx';
@nombre_del_fichero = split(/\./, $nombre_del_fichero);
$sha1 = $nombre_del_fichero[3];

Perl:
$nombre_del_fichero = 'Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx';
$sha1 = (split /\./, $nombre_del_fichero)[3];

Perl:
$nombre_del_fichero = 'Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx';
($sha1) = $nombre_del_fichero =~ /zip\.([^.]+)/;
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