in reply to trying to get Net::SFTP::Foreign to work

Where did ->new from the synopsis go?

When eval fails, check $@.

my $ftph; eval { $ftph = Net::SFTP::Foreign( "$user\@$host", more=>'-v', autodie=>0 ); 1 } or die $@;
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]