• Publicidad

Grep en web

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

Notapor explorer » 2007-10-12 13:46 @615

get() es una función definida en LWP::Simple.
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

Publicidad

Notapor joss » 2007-10-24 13:16 @594

Hola tengo una pregunta sobre un array. Yo hago esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($palabra1, $palabra2) = $doc =~ m/\'(\w+)\.(\w+)\'/simo;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Me guarda la primera palabra en 'palabra1' y la segunda después del punto en 'palabra2'. Pero imaginemos que ejecuto dos veces esa función, pero las palabras son distintas en cada una de las ejecuciones.

ejecucion 1:
hola.pepe

Código: Seleccionar todo
palabra1 = hola
palabra2 = pepe


ejecución 2:
adios.jose

Código: Seleccionar todo
palabra1 = adios
palabra2 = jose


En un principio almacenan las palabras 'hola' y 'pepe' pero al final se quedaría con 'adios' y 'jose'. Pero al cuestión es que yo quiero que siga almacenando las 4 palabras y para ello tengo que hacer uso de los array. Y yo creo que se hace así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($palabra1[], $palabra2[]) = $doc =~ m/\'(\w+)\.(\w+)\'/simo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

reservando espacio indefinido para una o más variables.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor explorer » 2007-10-24 15:12 @675

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @palabra1;  # 4 variables: dos arrays y dos escalares
my @palabra2;
my $palabra1;
my $palabra2;

# ...

# ... leer doc aquí ...

($palabra1, $palabra2) = $doc =~ m/\'(\w+)\.(\w+)\'/simo;

# Guardamos las palabras leídas en dos arrays
push @palabra1, $palabra1;
push @palabra2, $palabra2;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Para guardar elementos en un array se utilizan las funciones push() y unshift().
Para sacar elementos, la pop() y la shift().
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

Notapor explorer » 2007-10-24 15:24 @683

Hummm... creo que no te he respondido bien...

Creo que quieres decir que $doc contiene muchas combinaciones de esas palabras.

Bueno, pues una forma de hacerlo sería con un bucle:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while ( ($palabra1, $palabra2) = $doc =~ m/\'(\w+)\.(\w+)\'/sigmo) ) {

    # Guardamos las palabras leídas en dos arrays
    push @palabra1, $palabra1;
    push @palabra2, $palabra2;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora sí. Con el añadido de /g y el while, la expresión regular recorre todo el $doc, sacando las palabras, y con los push las vamos almacenando en sendos array.
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

Notapor joss » 2007-10-25 14:55 @663

hummm pero yo podría asignar a una variable una palabra almacenada.

Por ejemplo, la palabra que me almacena en la segunda ejecución:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$var = @palabra[1];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


??
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor explorer » 2007-10-25 15:06 @671

Después de haber leído todo el $doc, puedes acceder a los contenidos de @palabra1 y @palabra2.

Así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$var = $palabra1[1];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Recordar: un elemento de un array es un escalar, por lo que es necesario usar '$' delante de la variable. No '@', que indica que nos referimos a un conjunto de elementos o al array completo.
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

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 18 invitados

cron