A ver... No debería haber problemas para bajar archivos que se "ven" y que se pueden bajar "manualmente" con el Filezilla. Todo consiste en que Net::FTP sepa entrar al directorio remoto correcto, active el protocolo correcto (pasivo/activo, ascii/binario), y lo baje.
Eso sí... una vez me encontré con un caso de un servidor FTP que no admitía bajadas con intervalos de tiempo entre bajadas muy cortos, por lo que tuve que poner un
sleep 1; o
sleep 2; antes de la bajada del siguiente archivo, para que le diese tiempo a "respirar" al pobre servidor FTP.
Aún no me has respondido a la pregunta de si los archivos txt están en varios niveles de profundidad o todos en el mismo directorio.
Si todo está en el mismo directorio, es fácil hacer todo eso con solo Net::FTP. Incluso existen módulos que lo simplifican aún más, como
Net::FTP::File.
Pero con Net::FTP debería ser suficiente: te conectas, vas al directorio, sacas un listado de los archivos disponibles con ls() o con dir(), y luego recorrer ese listado, bajando cada archivo.
Más... no se me ocurre...