>>>>> On Thu, 1 Mar 2007 22:57:26 -0800, Eric Wilhelm <[EMAIL PROTECTED]> said:

  > This still hangs for me on linux 5.8.4 and mac 5.8.6 at least.
  >   perl -e 'use Module::Build;
  >     my $a = Module::Build->prompt("foo", "a"); warn $a;' > /dev/null

Of course it is because STDIN is open and working fine and so perl is
waiting for your answer. Perl writes the prompt and waits. I would not
call it hanging, it's waiting for an answer to a question it asked. If
the user redirects the prompt to /dev/null, then he deliberately
shoots himself in the foot and there is no way to find that out.

When you replace your ">" with "<" you see that the behaviour is sane.

  > Again, why fileno and not this?

  >  return $ENV{PERL_MM_USE_DEFAULT} ||
  >   ( !$self->_is_interactive && (-t STDIN || eof(STDIN));

I hope somebody else can explain the full story. My complaint was only
that eof(STDIN) never returns on an open terminal STDIN filehandle.
Just try:

    perl -e 'print eof(STDIN)'

and wait.

  > Actually, what I don't understand is why it doesn't hang for everybody.

It simply took a long while until somebody used Module::Build in a way
to trigger the bug.

-- 
andreas

Reply via email to