Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: Help with Net::FTP module

by spacebar (Beadle)
on Jan 09, 2013 at 05:12 UTC ( #1012377=note: print w/replies, xml ) Need Help??


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

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1012377]
help
Chatterbox?
[Eily]: you could tie a variable into not having the same value each time, if you like to make people who try to debug your code facepalm
[Corion]: perl -wle 'package o; use overload q("") => sub {warn "str"; ""}, bool => sub{warn "bool"; 1}; package main; my $o={}; bless $o => o; print "Yay" if ($o && !length($o))'
[Corion]: But people writing such code should document the objects they construct and why it makes sense for an object to be invisible as string while being true in a boolean context
[hippo]: That's equal parts clever and horrendous.
[Eily]: the overload version wouldn't return true with "$x" && !length $x though, I guess
[hippo]: The more I look at this code, the more $x is a plain old scalar and the more this condition will never be true. I'm calling it a bug at this point.
[hippo]: Thanks for your input which has soothed my sanity (a little)
[Corion]: Eily: Sure - if you force both things into stringy things, then you break that magic. But that would also mean that you changed the expression, as now $x = 0.00 will be true instead of false as it were before
[Corion]: Ah no, at least in my feeble experiments that doesn't change the meaning
[Corion]: We sell sanity in small packages ;)

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (9)
As of 2017-07-27 13:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (413 votes). Check out past polls.