in reply to While(defined(STDIN)) does not break

This is the way I like to do this. I put the input and the condition that stops the loop in the while() statement. The first snippet exits loop when a line with only white space is there. Note that \n counts as white space (\n\r\n\f\t ). The second example shows how to stop on "quit"

The third example is more complicated and uses the "comma operator". This allows the user prompt to be part of the statement in the while()condition.

#!/usr/bin/perl -w use strict; while ((my $line=<STDIN>) !~ /^\s*$/) { print $line; } # to stop on quit use this: while ((my $line=<STDIN>) !~ /^\s*q(uit)?\s*$/i) { } #use of comma operator #note paren's are needed around print to get #line buffering to work out right. while ((print "enterline:"), (my $line=<STDIN>) !~ /^\s*$/) { print $line; }