http://www.perlmonks.org?node_id=1001538


in reply to pipe perl

See open. Then try this:

open(my $old, '|-', "/bin/old"); select((select($old), $| = 1)[0]); foreach my $INPUT(@DATA) { my ($LAST_NAME,$FIRSTNAME,$ID_NUM,$BOOK) = split(/\s+/,$INPUT); print $old "$LAST_NAME\t$FIRSTNAME\n"; print $old "\t$ID_NUM\t$BOOK\n" }

Replies are listed 'Best First'.
Re^2: pipe perl
by kennethk (Abbot) on Oct 30, 2012 at 20:21 UTC
    A very important element for this solution (which goes unmentioned above) $| = 1. This turns off buffering on the output stream, or "sets the pipe to hot" (see perlvar). If you are having buffering issues, you can also close your file handle to clear the buffer.

    #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.