getcwd() no devuelve la ruta del programa, sino el directorio de trabajo actual (en el momento de llamar a getcwd()).
Si no se ha cambiado con un chdir(), getcwd() será el del directorio desde
donde se ejecutó el programa (que no tiene que ser necesariamente el mismo que en
donde reside el programa).
Ejemplo:
Using bash Syntax Highlighting
explorer:~/Documentos/Desarrollo> cat kk.pl
#!/usr/bin/perl
use v5.16;
use Cwd;
say getcwd();
chdir '/home/explorer';
say getcwd();
explorer:~/Documentos/Desarrollo> ./kk.pl # llamamos al programa desde el mismo directorio
/home/explorer/Documentos/Desarrollo
/home/explorer
explorer:~/Documentos/Desarrollo> cd ..
explorer:~/Documentos> Desarrollo/kk.pl # llamamos al programa desde otra posición
/home/explorer/Documentos
/home/explorer
explorer:~/Documentos>
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4