use IO::Handle qw( ); # For autoflush BEGIN { # Override pipe to return something selectable on Windows. if ($^O eq 'MSWin32') { require Win32::Socketpair; require subs; subs->import('pipe'); *pipe = sub { ($_[0], $_[1]) = Win32::Socketpair::winsocketpair() or return; }; } } pipe(my $r, my $w) or die $!; $w->autoflush(1); print $w ("Hello World\n"); print(scalar(<$r>));