http://www.perlmonks.org?node_id=295431
mikedshelton has asked for the wisdom of the Perl Monks concerning the following question:

Have read all the posts on Net::SFTP however still need assistance to catch errors when using $sftp->put()

$sftp->put() does not appear to return a status (success or failure) that can be caught in $@; I have confirmed client side info (file, directory) and connection (host, user, password) is correct

What I'd like to do is catch errors, check for errors caught, kill program when errors exist and write these errors to a log file and the screen.

use strict; use Net::SFTP; $sftp->put( $file, $target_file, \&callback ) or die( "\nDied : Error $!");

returns "Died..." everytime... BTW the file is written successfully to host and $! is null so tried wrapping with eval{} without success

eval { $sftp->put( $file, $target_file, \&callback ); }<br> if ( $@ ) { writelog(...) die("Died Here: Error $!"); }

When trying to write to a known invalid directory on host, we never make it in "if ($@)"

The errors (below) don't appear to be caught in $@.   Errors received are: Any assistance would be appreciated
Mike

janitored by ybiC: Fix broken <code> tags, unordered list and formatting of errors for legibility