El problema está en que aún sigues usando Windows.
Este sistema operativo se empeña en vigilar qué aplicación abre qué archivo. Si te dice que ese archivo está en uso, es que lo está. Y no importa los permisos que le pongas en el lado del servidor. Lo que cuenta es quién lo está viendo en ese momento.
Cuando haces el doble clic para bajártelo por FTP, ¿no estará el antivirus analizando el archivo, en ese preciso momento? Podría ser incluso el propio programa de FTP, alguna copia que haya quedado en memoria.
Si bajas el archivo desde el servidor a un directorio local, y de allí lo mandas al programa, ¿te sale el mensaje de error?
Existen utilidades para Windows (no incluidas de base, por supuesto) que funcionan como el
lsof de Linux, y te pueden decir qué aplicación está husmeando en ese archivo.
No conozco mucho del comportamiento de Perl en Windows, pero sé que el lenguaje tiene algunos controles para saber si puede o no leer un archivo: la comprobación '-r', un fallo en el open()...