The object is defined, but it won't work anymore, and you should get errors if you try to do anything with it (assuming you are checking for errors). You'll have to reconnect with a new object if you lose the connection. | [reply] [Watch: Dir/Any] |
I would recommend changing the timeout to +240 and check/use return value after each operation, something like:
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 $retval = 1;
if ($retval == 1) {
print "**Error occurred .........etc.\n";
}
else {
print "**Successfully put file(${source_directory}/${file_name_to_
+xfer}) to host($host).\n";
}
return $retval;
} # End ftp_put_file()
| [reply] [Watch: Dir/Any] [d/l] |
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()
| [reply] [Watch: Dir/Any] [d/l] |