use warnings; use strict; use Net::SFTP::Foreign; my $host = 'xxx.xxx.xxx.xxx'; my $user = 'user'; my $pass = 'pass'; my $file = 'whatever'; my $contents; my $sftp = Net::SFTP::Foreign->new ($host, backend => 'Net_SSH2', username => $user, password => $pass); $sftp->error and die "Unable to establish SFTP connection: " . $sftp->error; close STDOUT; open STDOUT, '>', \$contents or die "Can't open STDOUT: $!"; $sftp->get($file, \*STDOUT) or die "get failed: " . $sftp->error; warn $contents;