#!/usr/bin/perl use IO::Pty; my $cmd = "scp"; my @args = ("-v", "big.tar", "egilchri\@other_machine:"); &do_cmd ($cmd, @args); sub do_cmd { my ($cmd,@args) = @_; my $pty = IO::Pty->new or die "can't make Pty: $!"; defined (my $child = fork) or die "Can't fork: $!"; return $pty if $child; POSIX::setsid(); my $tty = $pty->slave; close $pty; STDIN->fdopen($tty,"<") or die "STDIN: $!"; STDOUT->fdopen($tty,">") or die "STDOUT: $!"; STDERR->fdopen(\*STDOUT,">") or die "STDERR: $!"; close $tty; $| = 1; exec $cmd,@args; die "Couldn't exec: $!"; }