use Net::SSH::Perl # vars to set: $user, $password, $host, $local_fqn, $rmt_dir open STDOUT, ">$local_fqn" or die "Can't redirect stdout"; select STDOUT; $| = 1; # make unbuffered $cmd="tar -czf - $rmt_dir"; my $ssh = Net::SSH::Perl->new($host); $ssh->login($user, $password); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); close STDOUT;