I prefer exceptions and including the reason for failure, and I don't care for functions that return non-zero (true) on failure (perl is not 'C' or shell) nor unnecessarily wrapping variables in quotes, so I might write you sub more like (I also would probably pass in arguments and make it self-contained and
'use strict' compliant, but I'll leave that out for now):
sub ftp_put_file {
# If rename_file = "Y" transfer file with '.xferring' as extension.
if ( $rename_file eq "Y" ) {
$file_name_to_xfer = "$file_name.xferring";
}
else {
$file_name_to_xfer = $file_name;
}
$ftp->put( "$source_directory/$file_name", $file_name_to_xfer ) or d
+ie "Failed to transfer $source_directory/$file_name: ".$ftp->message(
+);
print "**Successfully put file($source_directory/$file_name_to_xfer)
+ to host($host).\n";
return 1;
} # End ftp_put_file()