On Fri, Mar 22, 2002 at 09:37:05AM -0500, David Gray wrote:
> while(<STDIN>) will create an infinite loop, 

No, it won't.  The "while (<FILEHANDLE>)" idiom will read one line at a
time and automatically terminate the loop at the end of the file.

> so you do need some sort of
> sentinel value to break out of the loop if you encounter it in the user
> input. For example, you could do:
> 
> while(<STDIN>) {
>   last if /^\-1/;
>   print
> }

This will prematurely terminate the while loop.  Perhaps that's what you
want, but it isn't required.

> Which terminates the loop when the user enters -1 at the beginning of a
> line. Or you could read from a file which would make it easier to test
> for the end of input.

That's a very non-obvious and befuddling interface.  Entering ^D
(or possibly ^Z on Win*) sends an EOF to standard in put, which
will cause the loop to terminate.

This allows STDIN to work properly when reading from the console as well
as when reading a file passed as standard input.

Z.


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to