The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More tests => 4;

use IO::Vectored;

pipe(my $r1, my $w1) || die "pipe: $!";
pipe(my $r2, my $w2) || die "pipe: $!";

if (!fork) {
  my $val = ' ' x 1000;
  my $len = sysreadv $r1, $val || die "sysreadv: $!";
  $val = substr($val, 0, $len);
  syswritev $w2, $val || die "syswritev: $!";
  exit;
}


my @vector = qw(hello sweet world what is up?);
my $str = join '', @vector;
ok(length($str) % 4 == 0, "chose valid length string");

my $rv = syswritev($w1, @vector) || die "syswritev: $!";
is($rv, length($str), 'syswritev returned right length');

my @vector2 = (' ' x (length($str)/4)) x 4;
my $rv2 = sysreadv($r2, @vector2) || die "sysreadv: $!";
is($rv2, length($str), 'sysreadv returned right length');
is(join('', @vector2), $str, 'round-trip OK');