• Publicidad

Expresión regular guardada en un escalar, ¿cómo se usa?

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

Expresión regular guardada en un escalar, ¿cómo se usa?

Notapor pedrete » 2012-10-24 04:53 @245

¡¡¡Hola a todos...!!!

Por favor, perdonad mi torpeza pero estoy atascado en algo aparentemente ridículo y no doy con la solución...
Tengo una expresión regular guardada en un escalar pero no logro usarla:

$i="/hola/";
if ("holaatodos" =~ $i) { print "POSITIVO"; }

¿por qué esto no funciona?

Mil gracias de antemano...

Pedrete.
pedrete
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2011-04-13 09:59 @458

Publicidad

Re: Expresión regular guardada en un escalar, ¿cómo se usa?

Notapor explorer » 2012-10-24 09:18 @429

No has guardado una expresión regular. Sigue siendo una cadena de caracteres.

Esto es lo correcto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $i = qr(hola);
  2.  
  3. if ("holaatodos" =~ $i) {
  4.     print "POSITIVO";
  5. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El operador qr() coge una expresión como si fuera un patrón y la convierte en una expresión regular, que podemos guardar en una variable escalar, para luego utilizar en otras expresiones regulares.

Incluso podríamos escribirlo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ("holaatodos" =~ /$i/) {
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
con lo que se parece más a una operación de expresiones regulares, al tener delante los delimitadores '//'.

Naturalmente, esto también es cierto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $i = "hola";
  2.  
  3. if ("holaatodos" =~ /$i/) {
  4.     print "POSITIVO";
  5. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En este caso, la variable escalar guarda una cadena de caracteres, y luego en la expresión regular es interpolada y tratada como un patrón.
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: Expresión regular guardada en un escalar, ¿cómo se usa?

Notapor pedrete » 2012-10-24 09:42 @445

¡¡Ole!!

Mil gracias, explorer...

¡¡¡Funciona!!!

Pedrete
pedrete
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2011-04-13 09:59 @458


Volver a Básico

¿Quién está conectado?

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