http://www.perlmonks.org?node_id=1012377


in reply to Re: Help with Net::FTP module
in thread Help with Net::FTP module

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()

Replies are listed 'Best First'.
Re^3: Help with Net::FTP module
by runrig (Abbot) on Jan 09, 2013 at 15:19 UTC
    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()