in reply to Dueling Modules

It'll probably help to change change:

my $sftp  = eval 'Net::SFPT->new($myaddr,%params)'

to:

my $sftp  = eval  { Net::SFTP->new($myaddr,%params) };

But i think the big errors are:

"makerandom" is not exported by the Crypt::Random module "makerandom_itv" is not exported by the Crypt::Random module "makerandom_octet" is not exported by the Crypt::Random module

Which means that something is attempting to use Crypt::Random, but the version that it found doesn't have 'makerandom' and the other functions in @EXPORT or @EXPORT_OK. You may wish to make sure your Crypt::Random is up to date, and not corrupted.

I'd also suggest adding 'use strict' and 'use warnings', in both your scripts, and in your 'MY::Net::SFTP' module.