Perl no tiene la culpa de que programes mal
Todo lenguaje tiene sus limitaciones, pero un programador novato no sabrá alcanzarlas.
Cuanto más pesado es un fichero, más se inclina la balanza de la carga hacia el transporte del fichero y menos en su procesamiento, salvo que el fichero vaya a ser realmente procesado.
Ejemplo (real): cada dos horas yo obtengo un fichero de 1,5Gb que tardo en transmitir al ordenador de almacenamiento en un minuto. Una vez guardado, no se hace nada con el fichero, salvo unos días más tarde, guardarlo en DVD. En este caso, es más importante mejorar la transmisión que la CPU.
Pero ese mismo fichero se lleva a otro ordenador, que durante 110 minutos genera miles de nuevos ficheros que ocupan 7Gb. En este caso, prima mucho más mejorar el procesamiento, velocidad de acceso a los discos, etc. Que tarde 40 o 50 segundos más o menos en transmitir el fichero me importa menos que reducir los 110 minutos del proceso completo.
En tu caso, hablas de "subir" ficheros. Si sólo es recibir el fichero, renombrarlo, almacenarlo en su lugar correspondiente y actualizar el listado, todo eso, en procesarlo, es mucho menos que el tiempo que se tarda en recibirlo.