$sfh = $sftp->do_open($target_file ...); . . . #loop over source file, reading blocks of $data $status = $sftp->do_write($sfh, $offset, $data) &bail_out($status) if ($status != SSH2_FX_OK); . . . $sftp->do_close($sfh);