in reply to NET::FTP - Can't fetch

You're using $ftp->dir to get the list of files when you should be using $ftp->ls. Dir returns a long-list (ls -l) style of directory listing, where as ls simply returns a list of file names.

If you do want the long-list format for some reason you haven't stated here, you will need to trim each line to include just the filename before fetching it.

You're code, updated:
#!/usr/bin/perl -w use Net::FTP; use CGI qw(-oldstyle_urls :standard); use CGI::Carp qw(fatalsToBrowser); use strict; my $q = new CGI; my $host="myhost"; my $dir = "/home/docs/test/"; my $login = "xyxyxy"; my $pw = "uyuyuy"; my $ftp = Net::FTP->new($host) or die "Cannot connect to $host: $@"; $ftp->login($login,$pw) or die "Cannot login to $host as $login: $@"; $ftp->cwd($dir) or die "Cannot change working directory: $@"; my @files=$ftp->ls or die "Cannot list current directory: $@"; foreach my $x_files(@files) { $ftp->get($x_files) or die "Can't fetch $x_files: $!\n"; } $ftp->quit;h

Replies are listed 'Best First'.
Re^2: NET::FTP - Can't fetch
by Anonymous Monk on Feb 27, 2008 at 20:19 UTC
    That worked, great, but the files downloaded should be on the same directory where I am running this script right? Is there a way to send the files to another location in a directory above the one that this script runs from?
      This question is answered in another recent thread you might have seen. Saving FTP File.
      Sure. You just want to add an argument to your get statement with the new directory:
      #!/usr/bin/perl -w use Net::FTP; use CGI qw(-oldstyle_urls :standard); use CGI::Carp qw(fatalsToBrowser); use strict; my $q = new CGI; my $host="myhost"; my $dir = "/home/docs/test/"; my $new_dir = "/home/docs/new_test"; my $login = "xyxyxy"; my $pw = "uyuyuy"; my $ftp = Net::FTP->new($host) or die "Cannot connect to $host: $@"; $ftp->login($login,$pw) or die "Cannot login to $host as $login: $@"; $ftp->cwd($dir) or die "Cannot change working directory: $@"; my @files=$ftp->ls or die "Cannot list current directory: $@"; foreach my $x_files(@files) { $ftp->get($x_files, "$new_dir/$x_files") or die "Can't fetch $x_files: $!\n"; } $ftp->quit;