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


in reply to Re: Multiple STDIN sources
in thread Multiple STDIN sources

This is because it isn't reading it from a pipe in your test: it's reading it all from user input (as you typed in text followed by a control-D). If you do something like echo foo | ./stdin it does blow right past the prompt like the OP said.

Replies are listed 'Best First'.
Re: Multiple STDIN sources
by Abigail-II (Bishop) on Mar 10, 2004 at 00:40 UTC
    Oh, I see. In that case, just reopen STDIN, and read from the terminal:
    #!/usr/bin/perl -w use strict; $| = 1; my $stream; while (<>) { $stream .= $_; } open STDIN, "/dev/tty" or die; print "Do you want to process the stream? "; my $ans = <STDIN>; chomp $ans; print "Got '$ans'\n"; print "stream = $stream"; #... exit; __END__ $ echo foo | ./stdin Do you want to process the stream? yes Got 'yes' stream = foo $
    Abigail