in reply to ftp return value
Hello,
Yeah, the Net::FTP docs seem kind of lacking on this information. While I haven't tried the following answers out for myself, I got them from a program which works, so I'd assume they are correct:
1. when FTP->new() call was invoked
Well, this is just a typical constructor, the FTP code hasn't tried to do anything with a remote system yet. However, you can check for the return value of the login() call, like so:
2. when all the files were ftp'd. i.e., at FTP->quit
The return value of $ftp->quit would actually tell you if the quit() call was successful or not, which isn't what I think you're worried about.
What you'd need to do is check the call of each put() method:
Or, if you don't actually want to die, you could also just set a flag if the put fails. Just like login(), put returns a true value if successful, false otherwise.
Hope that helps!
-Eric
Update: Yeah, what derby said, he managed to type it in quicker then myself, and I like his eval trick :-)
--
Lucy: "What happens if you practice the piano for 20 years and then end up not being rich and famous?"
Schroeder: "The joy is in the playing."
Yeah, the Net::FTP docs seem kind of lacking on this information. While I haven't tried the following answers out for myself, I got them from a program which works, so I'd assume they are correct:
1. when FTP->new() call was invoked
Well, this is just a typical constructor, the FTP code hasn't tried to do anything with a remote system yet. However, you can check for the return value of the login() call, like so:
my $max_tries = 5; my $tries = 0; # login() returns false, if unsuccessful while( ! $ftp->login('anonymous', 'me@myself.com' ) { $tries++; die "We tried $tries times, but cannot connect!\n" if $max_tries == +$tries; warn "Attempt $tries: Could not connect, trying again.\n"; } print "Yay! We logged in!\n";
2. when all the files were ftp'd. i.e., at FTP->quit
The return value of $ftp->quit would actually tell you if the quit() call was successful or not, which isn't what I think you're worried about.
What you'd need to do is check the call of each put() method:
$ftp->put("$dir/$file1") or die "FTP did not succesfully upload $dir/ +$file!";
Or, if you don't actually want to die, you could also just set a flag if the put fails. Just like login(), put returns a true value if successful, false otherwise.
Hope that helps!
-Eric
Update: Yeah, what derby said, he managed to type it in quicker then myself, and I like his eval trick :-)
--
Lucy: "What happens if you practice the piano for 20 years and then end up not being rich and famous?"
Schroeder: "The joy is in the playing."
In Section
Seekers of Perl Wisdom