• Publicidad

Referencia al primer carácter de un string

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

Referencia al primer carácter de un string

Notapor rfm » 2007-11-15 04:59 @249

Hola a todos.

¿Alguien sabe cómo puedo comprobar si un string (para mi caso $linea[1] (está partida con split)) empieza con unos caracteres en concreto?

Lo que quiero hacer es comprobar si dicho campo ($linea[1]) empieza por 0,1 o 2.

Muchas gracias por vuestra colaboración.
rfm
Perlero nuevo
Perlero nuevo
 
Mensajes: 47
Registrado: 2007-11-09 09:00 @417

Publicidad

Notapor explorer » 2007-11-15 05:18 @262

Sí, hay varias formas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$primer_caracter = substr( $linea1[0], 0, 1);

if ( $primer_caracter eq '0' ) {
    # ...
}
elsif ( $primer_caracter eq '1' ) {
    # ...
}
elsif ( $primer_caracter eq '2' ) {
    # ...
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


O usando expresiones regulares:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( $linea1[0] =~ /^[0-2]/ ) {
    # ...
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
que quiere decir que si $linea1[0] comienza (^) por alguno de los caracteres ([]) del '0' al '2'.

Ya ves que las expresiones regulares son algo muy útil.
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 rfm » 2007-11-15 05:47 @282

Muchas gracias por tu respuesta.

¿Para obtener un mejor rendimiento a la hora de parsear un log serían mejor las expresiones regulares verdad?
rfm
Perlero nuevo
Perlero nuevo
 
Mensajes: 47
Registrado: 2007-11-09 09:00 @417

Notapor explorer » 2007-11-15 05:52 @286

En ese caso, lo mejor agregar la opción /o, para que Perl optimice la expresión regular para todos las líneas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$linea1[0] =~ /^[0-2]/o
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

/o no hace nada

Notapor Jenda » 2007-11-17 09:52 @452

explorer escribiste:En ese caso, lo mejor agregar la opción /o, para que Perl optimice la expresión regular para todos las líneas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$linea1[0] =~ /^[0-2]/o
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


/o no hace nada si la expresión no contiene ninguna variable.

/o solo significa algo si usas unas variables en la expresión:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 $linea1 =~ /^$busqueda/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sin /o, Perl cada vez lee el contenido de esta variable y compila la expresión; con /o solo lee el contenido la primera vez, compila la expresión y después usa la misma expresión incluso cuando la $busqueda ha cambiado su contenido.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor explorer » 2007-11-17 10:10 @465

Sí, Jenda. Tienes razón.

¿Crees que en ese caso sería mejor study?
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 6 invitados

cron