As you have seen in some of the previous posts, $@ is where the Net::FTP exit status is placed. This is the syntax I use:
my $ftp = Net::FTP->new
(
"someserver.com",
Timeout => 60
) or die "Could not connect to someserver: $@\n";
$ftp->login($username, $password) or die "Could not log in. $ftp->message\n";
Another thing you could do is set Debug to a none 0/undef:
$ftp = Net::FTP->new($ftp_server, Debug => 1) or die "Cannot connect: $@\n"; # This will generate more info for you.
Remember that some of your errors are going to STDOUT unless you redirect them in your program or the shell script executing it. If you need to exit immidiately use die if not use warn, the exit command will only yield a number you will have to give meaning to.