Si por tiempo agotado, entonces no es problema del programa, sino del servidor web, que corta la conexión por exceso de tiempo ocupado en servir/recibir información.
En algunos proveedores de Internet, los recursos de CPU y memoria se limitan en tiempo y tamaño. Por ejemplo, si se limita a que un servicio HTTP debe ser respondido en menos de un minuto, pues si llega a ese tiempo el servicio HTTP se cierra.
No me refiero a la opción de
tiempo agotado del Apache, ya que se supone que no se ha cortado la conexión mientras se subía el fichero, sino a la duración de la ejecución de todo el servicio web.
No nos das más pistas más que el tamaño del fichero.
De todas formas, debes comprobar el valor de la variable $CGI::POST_MAX una vez que hayas creado el objeto CGI. Es posible también que esté puesto a un límite de 10Mb, por lo que cortará la conexión cuando se llegue a ese límite. Si ese es el caso, te vale con ponerlo a -1 antes de iniciar la descarga.