求对使用ftp->ls得到文件名列表的不足改善

求对使用ftp->ls得到文件名列表的不足改善
程序的目的是将ftp服务器上的文件自动下载到本地, 因为文件名未知和没有规律, 所以使用ftp->ls的方式得到文件列表并赋予一个数组, 接着分别将数组单元所保存的文件下载下来, 问题是: 如果这个ftp文件夹$from_directory中存在非常多的文件的话, ls命令将会执行很久并且这个数组@files也会变得很大, 所以各位看看是否有什么其他的方法可以实现.
ps: ftp文件夹中的文件也是会不停的自动增加的, 由另一个无法修改的软件系统自动产生并放在这个ftp文件夹中.

附上部分代码:
#----------------------------------------------------------------------------------------------------------
$ftp=Net::FTP->new($from_machine[$c],Timeout=>1200) or $newerr=1;
  push @ERRORS, "Can't ftp to $from_machine[$c]: $!\n" if $newerr;
  myerr() if $newerr;
  print "Connected to $from_machine[$c]\n";
 
  $ftp->login($from_username[$c],$from_password[$c]) or $newerr=1;
  push @ERRORS, "Can't login to $from_machine[$c]: $!\n" if $newerr;
  $ftp->quit if $newerr;
  myerr() if $newerr;
 
  print "Changing to directory $from_directory[$c]\n";
  $ftp->cwd($from_directory[$c]) or $newerr=1;
  push @ERRORS, "Can't cd $!\n" if $newerr;
  myerr() if $newerr;
  $ftp->quit if $newerr;
  print "Starting to get file list\n";#051908
 @files=$ftp->ls or $newerr=1;  print "End to get file list\n";#051908
  @files=$ftp->ls or $newerr=1;
  push @ERRORS, "Can't get file list $!\n" if $newerr;
  myerr() if $newerr;
  print "--->There are $#files at ftp source ($from_machine[$c])\n"; 
#----------------------------------------------------------------------------------------------------------