Al lio, resulta que estoy desarrollando un script en Perl para montar facilmente un servidor MaNGOS.
El script, entre otras cosas, llama a programas externos (por ejemplo: no incluyo en el "paquete" GIT, por que ocupa lo suyo, pero si incluyo GIT portable comprimido, el cual pesa unos 10 MB. Luego, el programa 7zip (7za.exe), se encarga de descomprimir el fichero GIT.7z), y uno de los que es llamado, es el compilador de Visual C++ (para ser más específicos, llamo a devenv.com, al cual le paso como parámetros /Rebuild Release y la ruta de la solución.
El problema que tengo es el siguiente: Antes de ejecutar cada función (una se encarga de descomprimir GIT, otra de usarlo para descargar las fuentes de MaNGOS, otra se encarga de las compilaciones, etc...), realizo una comprobación tal que así:
Código
de manera que dicha función solo se ejecute si el programa que tiene que lanzar existe. Pues bien, esto funciona de fábula con todos los programas comprobados (git.exe, svn.exe ...), EXCEPTO UNO, el devenv.com.
unless (-e $PATHDEPROGRAMA){ }
Tengo en una variable llamada $VCPATH la ruta exacta al ejecutable devenv.com, tal que así:
$VCPATH = "\"C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\IDE\\devenv.com\"";
y lo raro es que, cuando hago la comprobación de existencia:
Código
unless (-e $VCPATH){ }
se me dispara el die, aún cuando el fichero indicado en $VCPATH existe.
Y para rematar el caso... si quito la comprobación, e intento usar el system para lanzar el $VCPATH con los parámetros que proceden... el programa funciona, se inicia la compilación perfectamente.
Luego aquí me estoy volviendo loco tratando de averiguar que narices pasa, es decir: ¿Porqué Perl se obstina en decirme que un determinado fichero no existe, cuando es patente que SÍ existe?.
Para más información, uso Windows 7 RC1, y por si acaso, con el UAC desactivado.
Salu2, a ver si le encontrais explicación, porque yo estoy...o_O .