use warnings; use strict; use Net::SSH qw(sshopen2); my $user = "username"; my $host = "hostname"; my $localfile = "~/example.local"; my $remotefile = "~/example.remote"; sshopen2("$user\@$host", *READER, *WRITER, "cat > $remotefile") || die "ssh: $!"; open INFILE, "<", $localfile; print WRITER $_ while sysread INFILE, $_, 8192; close(INFILE); close(READER); close(WRITER);