• Publicidad

Tipos de comillas en Perl

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

Tipos de comillas en Perl

Notapor johnk » 2010-09-20 02:59 @166

Hola a todos.

Tengo un problemilla con los tipos de comillas en Perl.

El caso es que esta función funciona perfectamente bajo MacOSX. Pero al pasarlo a Debian me da el siguiente error: sh: Syntax error: Unterminated quoted string.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub get_xml{
        $mac =  Extr::get_mac();
        $get_xml=`/usr/bin/wget --no-check-certificate '$Conn::RUTA/c_igeneral.php?mac=$mac&xaSj1=$Conn::PASS' -O $Conn::HOME/general.xml`;
        return $get_xml_particular;
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


He probado poniendo en vez de variables, el string a pelo, y nada. El problema me lo da, creo, la comilla simple "'". El problema de no ponerla es que la variable Mac en vez de contener, por ejemplo, 92f3ac2d9c1a, me da solo 92, y ahí se corta el string en la petición (no sé si es que me coge la variable como un entero o algo así, el caso es que en la petición me sale tan solo esto: https://XXX.XXX.XX.XXX/c_igeneral.php?mac=92)

Muchas gracias.
johnk
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2010-06-09 05:01 @250

Publicidad

Re: Tipos de comillas en Perl

Notapor explorer » 2010-09-20 03:55 @205

Las comillas invertidas ejecutan el comando en el shell del sistema, después de haber realizado una interpolación de las variables que hubiese, dentro de ella.

Las comillas simples son necesarias, pues dentro del URL que quieres que wget recupere, hay un carácter "&", que tiene un significado especial para el shell: sirve para enviar el proceso a segundo plano, que no es lo que queremos. Metiendo la cadena entre comillas simples, impedimos que el shell "vea" ese carácter de forma individual, y lo envíe todo como un solo argumento a wget.

Yo no veo problemas en el código, salvo que no entiendo por qué la función devuelve el valor de la variable $get_xml_particular, cuando es $get_xml la que se ha modificado.

En caso de tener más problemas, podías construir la cadena metiendo cada parte en una variable, y luego meter todas ellas dentro de las comillas invertidas.

Información sobre los distintos tipos de comillas en Perl, en la sección Quote-Like-Operators de perldoc perlop.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot], Google [Bot] y 3 invitados

cron