# from Ken Williams # on Sunday 04 February 2007 07:13 pm: >On Feb 1, 2007, at 5:42 PM, Andreas J. Koenig wrote: >> The offending line: >> >> + return $ENV{PERL_MM_USE_DEFAULT} || ( !$self->_is_interactive && >> eof STDIN ); >> >> This hangs forever when the STDOUT is redirected and STDIN is not >> redirected. > >Indeed. > >I think I've got a reasonable fix, does it look reasonable to you? >Of course, STDIN could be something more exotic like a tied fh, and >then I guess we'd be at the mercy of whomever tied it... > >I found this by looking in the perl source for the smallest wrapper >around the PerlIOValid() macro. >+ return $ENV{PERL_MM_USE_DEFAULT} >+ || ( !$self->_is_interactive && !defined fileno STDIN );
From my experiment, this doesn't change the behavior. It just causes it to hang later in _readline() instead. return $ENV{PERL_MM_USE_DEFAULT} || ( !$self->_is_interactive && (-t STDIN ? 1 : eof(STDIN)); I think this gives you the correct answer for _is_unattended() -- where STDOUT is being redirected, we are unattended unless we're being fed a set of scripted answers on STDIN. --Eric -- hobgoblin n 1: (folklore) a small grotesque supernatural creature that makes trouble for human beings --------------------------------------------------- http://scratchcomputing.com ---------------------------------------------------