Rob Dixon wrote: > Hi Bob. > > "Bob Showalter" <[EMAIL PROTECTED]> wrote in message > 2E4528861499D41199D200A0C9B15BC001D7E652@FRISTX">news:2E4528861499D41199D200A0C9B15BC001D7E652@FRISTX... > > Rob Dixon wrote: > > > ... > > > You're right, I'm wrong, and I hereby resign. > > > > > > perl -p -i -e "redo if /^\s*$/" file.ext > > > > > > is completely wrong, as the redo doesn't pull in the next line > > > from the input. It simply retests the same blank line > > > indefinitely. The neater > > > > > > perl -p -i -e "s/^\s*$//" file.ext > > > > > > is the correct way. > > > > Why not just > > > > perl -pi -e 'next if /^$/'; # skip empty lines > > > > or, > > > > perl -pi -e 'next unless /\S/'; # skip lines containing > > only whitespace > > Because using 'next' will process the continue block of the loop > before going to the top and fetching the next input line. Since the > -p qualifier > introduces something like: > > while (<>) > { > # Your code here > } > continue > { > print; > } > > around your code, the line will be printed regardless of the result > of the test. The neatest way is to replace each blank line with the > null string so that the print statement, when executed, produces no > output.
Oops! Of course. In that case, how about inverting the approach: perl -ni -e 'print unless /^$/'; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]