### i know this does not work, i am showing the idea my $ftp = Net::FTP->new($server,$user,$pass); $ftp->cwd("/some/dir"); pipe(R,W); $ftp->put(\*R,'filename'); print W "data here\n"; $ftp->quit; #### pipe(READ,WRITE); $pid = fork(); if ($pid == 0) { ## child (read) close(WRITE); $ftp->cwd("/some/dir"); $ftp->put(\*READ,'filename'); $ftp->quit; } else { ## parent (write) close(READ); ## ... do some cool processing for $data print WRITE $data; close(WRITE); }