• Publicidad

Salida incorrecta

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

Salida incorrecta

Notapor later » 2007-11-01 12:18 @554

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@palabra=("tarde","lunes","@@hola","adios@@hola");

for ($i=0;$i<=3;$i++)
{
    print "$palabra[$i]\n\n";
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Resultado:

Código: Seleccionar todo
tarde

lunes

@

adios@


Las dos últimas no se pintan completamente.
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Publicidad

Notapor explorer » 2007-11-01 13:26 @601

Hay que recordar que las comillas dobles significan interpolación de las posibles variables que hay en su interior.

Y lo que vemos es que hay variables dentro del array @palabra: @@hola (dos veces).

La solución es escapar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@palabra=("tarde","lunes","\@\@hola","adios\@\@hola")
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o entrecomillado simple:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@palabra=('tarde','lunes','@@hola','adios@@hola')
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

aunque... en este caso... también vale no poner nada :-)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@palabra = qw( tarde lunes @@hola adios@@hola )
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

use strict;

Notapor Jenda » 2007-11-01 13:57 @623

Incluido

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use warning;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


en las primeras lineas de tu código obtendrás una mensaje que to podría ayudar. Actualmente, al primero obtendrás otra, que te pide declarar la variable @palabra. Después de hacer esto obtendrás:

Código: Seleccionar todo
Global symbol "@hola" requires explicit package name at - line 2.
Global symbol "@hola" requires explicit package name at - line 2.
Execution of - aborted due to compilation errors.

Es verdad que el mensaje no es muy claro, pero lo que quiere decir es que estás intentando usar la variable @hola que aún no está declarada.

use strict; te protege de usar variables inexistentes sin querer usarlas. Créeme, quieres estar protegido.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

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