in reply to Trapping errors from NET::Ftp

Below is a little routine I wrote for checking the status of just about any of the Net:: modules (SMTP, FTP, NNTP, etc...)
I pulled this code from memory, so it may not be quite right
sub check_net_err{
  my $net=shift;
  if(!defined $net){
    die "Net:: object not defined $!";
  }else{
    if((!$net->ok())||($net->code() >= 400)){
      die "Net:: error ".$net->code()." : ".$net->message();
    }
  }
}
you can use it like this:
$ftp = Net::FTP->new($hostname);
check_net_error($ftp);
$ftp->login("anonymous","metar\@speedfreak.com");               
check_net_error($ftp);
$ftp->get($path.$station.".TXT", $datapath.$station.".TXT");
check_net_error($ftp);
$ftp->quit;
check_net_error($ftp);
of course, you can strip down the code, and put it inline in a different format for when you want to handle errors differently (i.e. you want to die if you can't connect, but if the "get" times out you may want to retry it).
Les Howard
www.lesandchris.com
Author of Net::Syslog and Number::Spell