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; $sftp->get($file, "foo.txt") or die "get failed: " . $sftp->error; open RD, '<', "foo.txt" or die $!; while () {$contents .= $_} close RD or die "$!"; print $contents; unlink "foo.txt"; #### 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;