# # Assumes %filelist and %connectinfo defined and # filled earlier # my $ftp = Net::FTP->new($connectinfo{'host'}; $ftp->login($connectinfo{'user'}, $connectinfo{'pass'}); my $current_target_directory = ""; foreach my $filename (sort(keys(%filelist))) { if ($current_target_directory ne $filelist{$filename}{'target'}) { $current_target_directory = $filelist{$filename}{'target'}; $ftp->cwd($current_target_directory); } $ftp->put($filename); print($filename, "\n"); } $ftp->quit;