in reply to Re: Non-blocking Reads from Pipe Filehandle
in thread Non-blocking Reads from Pipe Filehandle

Probably use one or more sub from Win32::IPC:

use Win32::IPC qw( wait_any wait_all WaitForMultipleObjects INFINITE );

- tye        

Replies are listed 'Best First'.
Re^3: Non-blocking Reads from Pipe Filehandle (WaitForMult...)
by ysth (Canon) on Jun 13, 2007 at 22:33 UTC
    Yes, I saw that, but didn't see an interface that allowed you to specify a handle. I found the doc a little confusing, both for Win32::IPC and its subclasses.

      I assumed worst case was use of Win32API::File's GetOsFHandle().

      But diving into the XS code I see that the module is about as poorly designed as any. As is all too common for XS modules and Win32:: modules especially, it has way too much XS code that can only handle the very narrowest of types of input. *sigh* If you pass it an object that "isa" subclass of Win32::Process, then it will call the object's get_process_handle() method. If you pass it an object that "isa" subclass of Win32::IPC, then it expects that to be a ref to a scalar containing the integer handle value.

      So you could probably get away with something like:

      my $handle= bless \GetOsFHandle(*PIPE), "Win32::IPC";

      which is pretty ugly and likely to break at some future date.

      - tye