use Net::FTP; $screen=1; # change to 0 for 'quiet' operation (ie no screen display) sub move_files { # moves a file by FTP to a remote site # Code by Richard Chiswell # http://www.beebware.com/ # Free usage, acknowledgements would be appreciated tho! my ($destination,$file)=@_; # destination is in the format username:password@ftp.example.com # file is the local full path name of the file to be transfered my ($username,$password,$host,$path,$ftp); my ($results,$logfile,$movedlog); # first let's split the destination information apart $destination=~/^([^\:]+)\:([^\@]+)\@([^\/]+)\/(.*)/; ($username,$password,$host,$path)=($1,$2,$3,$4); $path="/".$path; print "Destination:$destination\n" if $screen; print "Login as $username (password: $password) onto:\n" if $screen; print " Host: $host\n" if $screen; print " Path: $path\n" if $screen; $logfile.="Login as $username (password: $password) onto:\n"; $logfile.=" Host: $host\n Path: $path\n"; $logfile.=" Time: ".&show_time(time())."\n\n"; if (length($host)>1) { $ftp=Net::FTP->new($host,Debug=>0); if (!defined($ftp)) { print "* Unable to connect to FTP server:\n $@\n" if $screen; $logfile.= "*********************************************\n"; $logfile.="* UNABLE TO CONNECT TO FTPSERVER! *\n"; $logfile.="$@\n"; } else { $logfile.="Connected\n"; $results=$ftp->login($username,$password); if (!$results) { print "* Unable to login to FTP server:\n" if $screen; print $ftp->message()."\n" if $screen; $logfile.="********************************************\n"; $logfile.="* UNABLE TO LOGIN TO FTP SERVER! *\n"; $logfile.=$ftp->message()."\n"; } else { print "Logged in\n" if $screen; $logfile.="Successfully logged in\n"; $ftp->cwd($path); print "Changed to $path\n ".$ftp->message()."\n" if $screen; print "Current path is ".$ftp->pwd()."\n" if $screen; $logfile.="Path: ".$ftp->pwd()."\n"; $ftp->hash(1024); $ftp->binary(); $results=$ftp->put($file); if (!$results) { print "* Unable to transfer: file\n" if $screen; print $ftp->message()."\n" if $screen; $logfile.="* Unable to transfer:$file\n"; $logfile.=" Message:".$ftp->message()."\n"; } else { $movedlog.="Moved $file\n";unlink $file; $logfile.="Moved $file\n"; } $ftp->quit; } } $movedlog="These files have been moved to\n"; $movedlog.="$destination\n\n$movedlog\n"; } else { print "Unable to read FTP details!\n" if $screen; } return "$movedlog\n\n*****************************\n\n$logfile"; print "DONE!\n" if $screen; }