Control: tags -1 + confirmed Control: forwarded -1 https://rt.perl.org/Ticket/Display.html?id=133726
On Wed, Dec 12, 2018 at 04:54:22PM -0500, Zygo Blaxell wrote: > Dear Maintainer, > > The following one-line perl script fails: > > perl -e 'close(STDIN); open(CHILD, "|wc -l")' > > On Debian stable (5.24.1-3+deb9u5) it produces: > > $ perl -e 'close(STDIN); open(CHILD, "|wc -l")' > 0 > > but on Debian testing/unstable (5.28.1-1, 5.28.1-3) it produces: > > $ perl -e 'close(STDIN); open(CHILD, "|wc -l")' > wc: 'standard input': Bad file descriptor > 0 > wc: -: Bad file descriptor > > Other variants of open to a command > (e.g. open(CHILD, "-|") || exec ...) are similarly broken if STDIN is closed. > > This wreaks havoc on Perl filter scripts that pass data between child > shell commands: the commands unexpectedly get EBADF when reading from > stdin, or they unexpectedly use one of the other files they open as > their stdin. Thanks for the report! After some investigation, I forwarded the report upstream, and I believe a patch should be available shortly. Best, Dominic.