• Publicidad

split

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

split

Notapor xagutxu_perez » 2008-04-08 17:24 @767

¡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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$cadena = "ladudaquetengoahoraesusarbienelsplit";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@array_cadena = qw( l adud aquetengo ahor aesus arbienelsplit";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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

¿Es posible hacer esto?

Gracias...
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Publicidad

Notapor xagutxu_perez » 2008-04-08 18:13 @800

Bueno, ya me respondo yo...

He encontrado la solución en una web: basta con poner paréntesis en la parte / / del split. Voilà...!
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Notapor explorer » 2008-04-08 18:17 @803

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...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print join " a", split "a", "ladudaquetengoahoraesusarbienelsplit"'; # l adud aquetengo ahor aesus arbienelsplit
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Jenda » 2008-04-12 10:09 @464

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@array_cadena = ($cadena =~ /((?:^.|a)[^a]*)/g);
print join(',', @a);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si no hay delimitadores no usa split(), usa regexps.
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor chechoman » 2008-07-08 15:50 @701

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: Seleccionar todo
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.
chechoman
Perlero nuevo
Perlero nuevo
 
Mensajes: 19
Registrado: 2008-07-02 11:14 @510

Notapor explorer » 2008-07-08 16:04 @711

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$nombre_del_fichero = 'Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx';
@nombre_del_fichero = split(/\./, $nombre_del_fichero);
$sha1 = $nombre_del_fichero[3];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$nombre_del_fichero = 'Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx';
$sha1 = (split /\./, $nombre_del_fichero)[3];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$nombre_del_fichero = 'Nombrefecha.xml.zip.0000aaaaaabbbb000000.xxxx';
($sha1) = $nombre_del_fichero =~ /zip\.([^.]+)/;
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: 14486
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 2 invitados

cron