• Publicidad

Problemas con split() en emacs

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

Problemas con split() en emacs

Notapor thedj » 2009-05-03 17:24 @766

Hola, ante todo muy buenas noches. En la facultad me han planteado realizar un ejercicio bastante extenso, en la que una parte requiere el uso de split().

Resulta que al escribir en emacs:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@nombre = split /:/, $nombre;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


emacs, a partir del segundo "/" me marca todo el texto como si fuese un print(), es decir, del mismo color rosado del contenido de
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "este contenido";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Necesito ejecutar dicha orden de esa manera para extraer el contenido del archivo /etc/passwd/ y pasarlo a un vector.

No comprendo qué le puede pasar. A ver si me podéis ayudar.
thedj
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-05-03 17:15 @760

Publicidad

Notapor explorer » 2009-05-03 17:37 @775

Bienvenido a los foros de Perl en Español, thedj.

Lo que pasa es que el emacs no se da cuenta de que has escrito correctamente la línea. Solo es capaz de entender diversas formas de escribir Perl. Como no es de una forma conocida, piensa que está mal construida y la colorea mal.

Esta es una de las cosas malas que tiene Perl: nosotros como programadores podemos escribir el mismo programa de muchas formas, porque la sintaxis de Perl es amplísima. Y eso quiere decir que tiene el problema de que Perl no es fácilmente interpretable para cualquier otro programa que no sea perl.

Quiero decir: para poder representar la sintaxis de Perl con colores, un programa debe interpretar lo que está escrito en Perl... y eso puede ser terriblemente complicado.

Hay un dicho en el mundillo Perl que dice que perl es el único que puede interpretar Perl.

(Nota la presencia de mayúsculas y minúsculas: Perl es el lenguaje. perl es el programa intérprete de Perl).

Solución 1: no hagas caso. Si sabes que has escrito la línea de forma correcta, sigue así. Funcionará de todas maneras.

Solución 2: prueba a escribir la línea de otra manera. Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@nombre = split(/:/, $nombre);
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

Notapor thedj » 2009-05-03 17:46 @782

En primer lugar, muchas gracias por la pronta respuesta, y la extensa explicación que me has dado. Es todo un honor que me haya podido responder una persona con tantos conocimientos del tema.

En segundo lugar comentarle, que después de echarle un vistazo a cómo se pone en esta web, iba a utilizar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
split (":",$nombre);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿sería correcto, o estaría mejor como me has puesto?

Un cordial saludo.
thedj
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-05-03 17:15 @760

Notapor explorer » 2009-05-03 18:01 @792

El primer argumento de split() debe ser una expresión regular, pero por lo general da igual poner las barras que las comillas.

La única excepción en el comportamiento de split(), entre usar la notación de las comillas o de las barras es con el espacio en blanco. Es decir, que split(' ') no haría lo mismo que split(/ /).

Más información en perldoc -f split.
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 thedj » 2009-05-04 12:25 @559

De acuerdo, muchas gracias. Utilicé la primera que me diste y parece que funcionó.

Un cordial saludo.
thedj
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-05-03 17:15 @760

Notapor salva » 2009-05-05 05:02 @252

A mi en mi versión de Emacs (GNU Emacs 22.2.1) no me da ningún problema.

Así que lo mejor, si puedes, sera que actualices tu Emacs a una versión más reciente. Asegúrate también de que estás utilizando el modo cperl.

De todas formas, cuando todo lo demás falla, la manera de engañar al coloreador para que vuelva al estado deseado es usar un comentario seguido de los caracteres de cierre correspondiente. Por ejemplo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@s = split /:/, $foo;      # /;
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron