Vamos a ver... Tú estás escribiendo un programa Perl en Windows. Ese programa hace referencia al módulo GD, que no está instalado. Y de momento, lo único que quieres es comprobar la sintaxis del programa, para ver si está al menos bien escrito.
Sabemos que para comprobar la sintaxis sólo es necesario ejecutar esto:
- Código: Seleccionar todo
perl -c programa.pl
Si está bien el programa, entonces Perl devolverá
programa.pl syntax Ok
Bueno, el problema viene porque no tenemos instalado el módulo GD. Si hacemos un perl -c, nos dirá que no lo encuentra.
Como sabemos que la diferencia de estar instalado o no es simplemente del sistema operativo, usamos esa característica para diferenciar los entornos de trabajo.
Entonces... en el programa ponemos, en lugar del
use GD;, esto:
- Código: Seleccionar todo
BEGIN {
unless ($^O eq "MSWin32") {
require GD; import GD;
}}
y el resto lo dejamos tal cual. A la hora de comprobar la sintaxis, hacemos lo mismo que antes, un
perl -c programa.pl, pero la ejecución será distinta en un entorno que en otro. Si estamos en un entorno Windows no cargará el módulo y fallará en la primera línea que aparezca una referencia a él. Pero en otros sistemas, cargará el módulo y seguirá.
Esto se puede hacer porque
use se ejecuta en tiempo de compilación, mientras que
require e
import lo hacen en tiempo de ejecución.
Por eso podemos chequear la sintaxis de un programa sin tener los módulos, porque no han sido cargados en la fase de compilación.