#!/usr/bin/perl use warnings; use strict; use IO::Socket::INET; use POSIX; my $sock = IO::Socket::INET->new(PeerHost => 'example.com', PeerPort => 9999) or die "Couldn't open socket: $!\n"; my $pid = fork; if (!defined($pid)) { die "Couldn't fork: $!\n"; } if (!$pid) { # child POSIX::close(0); POSIX::close(1); POSIX::dup2(fileno($sock),0); POSIX::dup2(fileno($sock),1); print "Running lsz $0...\n"; exec('lsz','-v',$0) or die "Couldn't run zmodem: $!\n"; } # Parent wait or die "lsz failed: $?\n"; print "lsz exited $?\n";