#!/usr/bin/perl use warnings; use strict; use Net::FTP; my $ftp; #Net::FTP object my $is_error = 0; my $conn_success = 0; print "~ Enter FTP Host: "; my $hostname = ; chomp($hostname); while($conn_success != 1) { $ftp = Net::FTP->new($hostname,Timeout => 60, Passive => 1) or $is_error = 1; if($is_error){ print "~ Couldn't connect to $hostname."; } print "\n<->~ Connected to $hostname"; print "\n~ Enter FTP username: "; my $username = ; chomp($username); print "\n~ Enter FTP password: "; my $password = ; chomp($password); print "Trying to connect with\n <->Username: $username\n <->Password: $password\n"; $ftp->login("$username","$password") or $is_error = 1; if($is_error){ print "\n~ Login Failed!\n"; } else { print "<->~ Login Successful\n"; } $is_error = 0; $conn_success = 1; } $ftp->binary; file_dload($ftp->ls); $ftp->quit; sub file_dload { my @files = @_; foreach my $file(@files){ $ftp->get($file); #insert recursion for directories here } }