Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Help with Net::FTP module

by tekwiz (Initiate)
on Jan 08, 2013 at 17:22 UTC ( #1012288=perlquestion: print w/replies, xml ) Need Help??
tekwiz has asked for the wisdom of the Perl Monks concerning the following question:

I'm retired but the old company wants me to fix some code I worked on before when I was there. The issues are with the Net::FTP module. This works OK generally as the network is private. The send servers are UNIX and the remote server is Windows Server. Once a new connection has been made with the remote server and either the link goes down or the remote server goes down, is that object still defined? Also, my new connection sets the Timeout value to 15 seconds. Should subsequent commands also set this value or is this not necessary or even possible?

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

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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1012288]
Front-paged by Arunbear
and the universe expands...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2017-03-26 09:48 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (313 votes). Check out past polls.