levitte has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I'm trying my hands at some simple IPC using open, and while this works with no issues on Unix, VMS gives me some pain.

What I'm trying to to is something corresponding to the unix command:

yes | program

I made a test program to demonstrate:

#! /usr/bin/perl

use strict;

yes("exit");

sub yes {
    open(PIPE, "|-", join(" ",@_));
    local $SIG{PIPE} = "IGNORE";
    #local $SIG{PIPE} = sub { die "FOO!" };
    1 while print PIPE "y\n";
    close PIPE;
    return 0;
}

What I see happening on VMS is that the script appears to hang. However, having a look at it with SHOW PROC/ID=xxxxxx/CONT clearly shows the buffered I/O increasing at a rapid rate, so I can only assume that the while print loop became very tight. Changing what variant of local $SIG{PIPE} I use doesn't make a difference...

If there's a trick to have perl detect that the process being piped to stopped running on VMS, I'd be grateful!