por explorer » 2011-08-19 09:44 @447
Cambia los caracteres '\' por '/'.
Resulta que cuando tienes un entrecomillado simple, todos los caracteres que hay dentro se tratan de forma literal. Pero... hay un problema... hay un caso especial, muy especial... y es, justamente, lo que te pasa.
¿Qué ocurre si un día queremos meter una comilla simple dentro de una cadena de caracteres entrecomillada también simple? Pues en ese caso necesitamos "escapar" el significado de la comilla:
my $texto = 'Una cadena de caracteres con comilla simple: \' que termina\njusto aquí';
De esa manera, Perl sabe dónde termina, realmente, el entrecomillado simple. (Fijarse que el '\n' son dos caracteres, no es un carácter de avance de línea: ¡estamos con comillas simples!)
Otra opción más clásica sería usar entrecomillado doble:
my $texto = "Una cadena de caracteres con comilla simple: ' que termina justo aquí";
No hace falta "escapar" la comilla simple porque Perl sabe donde empieza y acaba la cadena de caracteres.
Bueno, pues veamos que es lo que tienes tú:
use lib 'C:\camelbox\site\lib\';
Y ya ves el problema: todos los caracteres '\' que hay dentro de la cadena son literales (son exactamente un carácter '\', pero el último '\', por estar delante de una comilla simple, está escapándola, y Perl cree que la cadena continúa en la siguiente línea. Vamos, que estás liando a Perl.
Solución 1: usar otro delimitador para la ruta de ficheros.
Como da la casualidad de que esta cadena tiene un propósito, que es el de indicar una ruta a un directorio, y estamos en Windows(MSDOS), en Perl se puede usar el delimitador '/':
use lib 'C:/camelbox/site/lib/';
Desde hace años, en MSDOS, ya se puede usar ese delimitador, para igualarlo con el del Unix.
Solución 2: quitar el último '\'.
use lib 'C:\camelbox\site\lib';
use lib siempre se refiere a una ruta, por lo que sabe que el último componente de la ruta debe ser el nombre de un directorio o carpeta. No es necesario, entonces, poner el '\' final.
Yo, por defecto, siempre uso '/'.
Yo, también, leería la documentación de CamelBox, para saber la forma correcta de usarla e instalarla junto con mi distribución de Perl. ¿Es, acaso, el uso de 'use lib' la única forma de usarlo? A lo mejor, con poner la variable de entorno PERL5LIB también funciona...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES