use strict; use warnings; use Net::FTP; use File::Listing qw(parse_dir); my $ftp = Net::FTP->new('some.host'); $ftp->login('user', 'password'); my $ls = $ftp->dir('/etc'); foreach my $entry (parse_dir($ls)) { my ($name, $type, $size, $mtime, $mode) = @$entry; if ($type eq 'd') { print "The directory is $name\n"; } else { next unless ($type eq 'f' and $size > 0); print "$name has size $size\n"; } } $ftp->quit;