in reply to Re: STDIN following on?
in thread STDIN following on?

Hmmm...
The first read of STDIN was supposed to slurp up all the data, and if the second read doesn't occur the script works fine and behaves as it should. The idea was that I then add a new line to STDIN typing on the console for the second read. I wonder if the second read is going back to the beginning of the original input and processing it again? I don't know how this explains the way that $answer appears to be decidedly undef, though...

Update: :-) Unfortunately, I've tried both <> and <STDIN>, and both give the same result.

Replies are listed 'Best First'.
Re^3: STDIN following on?
by CheeseLord (Deacon) on Aug 10, 2001 at 23:18 UTC

    Well, try this little test:

    eoftest.pl:
    #!/usr/bin/perl -w use strict; my @lines = <STDIN>; my $line = <STDIN>; print @lines; print "----\n"; print $line;

    Typing in the input from the terminal works great. But here's the problem:

    cat file | eoftest.pl

    You'll get your uninitialized value warning there. Reason? I think it has to do with the redirection (or to be more correct, piping) of STDIN when running your script. STDIN is now a pipe from "cat file" and can't have anything more read from it - causing the warning.

    Update: You may want to do something like this:
    open STDIN, "/dev/pts/0";
    to reopen STDIN to the correct place.

    His Royal Cheeziness

      Aha! Light dawns. This has the ring of truth about it. I hadn't appreciated the semi-permanent nature of these pipes.
      Thanks!
        You could try doing a close on STDIN, then re-opening it, but I have no idea if this'll work, or if it does, how well.

        ------
        /me wants to be the brightest bulb in the chandelier!

        Vote paco for President!