use Net::FTP; # You should 'use strict' if the final script is # going to be any longer than 5 or 10 lines, # which would make the next line 'my $ftp = ...'. # Also, according to the Net::FTP docs, connect # errors are reported in $@, not $! $ftp = Net::FTP->new("$host", debug => 1) or die "Host: $!"; # Error messages after new are reported in the # message() method ($ftp->message, and don't put it inside # quotes since methods won't get interpolated inside # quotes). This method is documented in Net::Cmd, which # Net::FTP inherits from. # Are $user and $pass set to anything? $ftp->login($user,$pass) or die "Login: $!"; # Same comment as above. $ftp->cwd() or die "Dir: $!"; # Are $file and $dir set to anything? # Does $dir exist on the local system? # Does $file exist in the current directory # on the remote system? # Is there a permission problem? # And you don't need to backwhack the "/" $ftp->get("$file","$dir\/$file") or die "File: $!"; $ftp->quit;