use File::Listing qw(parse_dir); my $ls = $ftp->dir(); foreach my $remotefile (parse_dir($ls)) { my ($name, $type, $size, $mtime, $mode ) = @$remotefile; ... }