From: Ronny on
I'm using ActiveState Perl 5.10.0 for Windows, and wanted to use
IPC::Cmd for running external programs. To my surprise, I found

IPC::Cmd->can_capture_buffer

returning false, meaning that I can't use it to capture the output of
the programs. Also, I found

IPC::Cmd->can_use_ipc_run

returning false, but

IPC::Cmd->can_use_ipc_open3

returning true. Does anybody know about a Perl implementation for
Windows where these features are implemented? Can the
ActiveState implementation of IPC::Cmd be used for anything
useful at all under these circumstances?

Ronald
From: Ben Morrow on

Quoth Ronny <ro.naldfi.scher(a)gmail.com>:
> I'm using ActiveState Perl 5.10.0 for Windows, and wanted to use
> IPC::Cmd for running external programs. To my surprise, I found
>
> IPC::Cmd->can_capture_buffer
>
> returning false, meaning that I can't use it to capture the output of
> the programs. Also, I found
>
> IPC::Cmd->can_use_ipc_run
>
> returning false, but
>
> IPC::Cmd->can_use_ipc_open3
>
> returning true. Does anybody know about a Perl implementation for
> Windows where these features are implemented? Can the
> ActiveState implementation of IPC::Cmd be used for anything
> useful at all under these circumstances?

You need to install IPC::Run. You can only capture buffers under Win32
if you can use IPC::Run (and if you're not on Win98), and you can only
use IPC::Run if it's installed. Probably IPC::Cmd ought to depend on
IPC::Run if it's being installed under Win32, since it isn't useful
without it.

(As a hint, all of the above is very clear from the source of the
module. If a module's not doing what you expect, it's always worth at
least glancing at the source, to see if there's some obvious reason.)

Ben

--
You poor take courage, you rich take care:
The Earth was made a common treasury for everyone to share
All things in common, all people one.
'We come in peace'---the order came to cut them down. [ben(a)morrow.me.uk]