Jue May 18, 2006 3:57 pm
|
 |
tomas_fnm
Perlero Nuevo

|
Registrado: 14 May 2006
Mensajes: 5
|
|
| Duda con Regexp |
|
|
Cuando ejecuto este código:
| Código: |
$linea = "la web</gl></b> a formato <gl><b>Latex</b>:Sistema";
$linea =~ m/<gl>(<\w>)*(\w+)/;
print "\n$2\n\n"; |
la salida que produce es:
Y hasta ahí no tengo problemas... pero lo que necesito es que la variable $linea se asigne al abrir un archivo de entrada... y cuando hago esto, el programa no me arroja algún valor en la variable $2... he probado de hartas formas y no se dónde puede estar el error...
Cuando realizo un match, hay alguna forma de capturar lo que encuentre en alguna variable que no sea por defecto? Es decir, en una variable que no sea $2 en este caso...
De antemano, gracias. |
|
|
|
Jue May 18, 2006 9:20 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Hola:
Pon el código que usas ya cuando abres el archivo e intentas hacer la captura con regexp.
Saludos |
|

Vie May 19, 2006 3:01 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4091
Ubicación: Valladolid, España
|
|
|
|
|
Para asignar el contenido de un fichero a una variable, hay multitud de ejemplos en estos foros:
| Código: |
open FILE, "<fichero.txt" or die "ERROR: No pude abrir fichero.txt: $!\n";
while ( $linea = <FILE> ) {
$linea =~ m/<gl>(?:<\w>)*(\w+)/;
print "\n$1\n\n";
}
close FILE; |
Fíjate que he cambiado el primer grupo de paréntesis de captura por uno que sólo agrupa. Entonces el segundo par de paréntesis captura su contenido y lo deja en $1.
Para asignar a una variable directamente el resultado de la captura, se puede utilizar una expresión regular extendida, pero experimental:
| Código: |
$linea =~ m/<gl>(?:<\w>)*(\w+)(?{ $palabra = $^N })/;
print "\n$palabra\n\n; |
Más información en perlre.
Como dice Uriel, es mejor que pongas tu código para saber qué ocurrió. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|