Página 1 de 1

Error con expresión regular

NotaPublicado: 2016-06-18 19:24 @850
por BigBear
Hola, tengo el siguiente código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $code = "";
  2.  
  3. open(FILE, 'raro.html');
  4. while (my $line = <FILE>) {
  5.     $code .= $line;
  6. }
  7. close (FILE);
  8.  
  9. chomp $code;
  10.  
  11. while ($code =~ /(?<="r"><. href=")(.+?)"/mig ) {
  12.         my $link = $1;
  13.         print $link."\n";
  14. }
  15. else {
  16.         print "nop";
  17. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El tema es que si uso while() en vez if() me devuelve estos errores:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't use global @_ in "my" at  line 45, near "= @_"
syntax error  line 60, near "}"
Can't use global @_ in "my"  line 63, near "= @_"
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Y sigue marcando lo mismo en todo el código. ¿Qué puede ser? ¿Dejé algo abierto?

Re: Error con expresión regular

NotaPublicado: 2016-06-18 20:02 @876
por explorer
No se trata de la expresión regular.

El error está en que un while() no tiene nunca una parte else{}. Es un error de sintaxis grave.

Y si cambias el while() por if(), tendremos una estructura correcta (if(){}else{}) pero el problema está ahora en el uso del operador diamante (<>): no es correcto dentro de un if() o, al menos, diremos que lo más lógico es que aparezca dentro de un while() (leer mientras no se llegue al final de un archivo).

Re: Error con expresión regular

NotaPublicado: 2016-06-18 21:44 @947
por BigBear
Maldita media noche, siempre es lo mismo :lol: Ignora la pregunta, explorer.