"Bob Showalter" <[EMAIL PROTECTED]> wrote in message
2E4528861499D41199D200A0C9B15BC001D7E653@FRISTX">news:2E4528861499D41199D200A0C9B15BC001D7E653@FRISTX...
> Rob Dixon wrote:
> > Hi Bob.
> >
> > "Bob Showalter" <[EMAIL PROTECTED]> wrote in message
> > 2E4528861499D41199D200A0C9B15BC001D7E652@FRISTX">news:2E4528861499D41199D200A0C9B15BC001D7E652@FRISTX...
> > >
> > > 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 /^$/';
>

I thought of that but, checking with the Camel, the actual continue block
looks like:

    continue
    {
        print or die "-p destination: $!\n";
    }

which the -n qualifier doesn't do, is too good to miss for free, and is too
clumsy to code explicitly in the command line.

I must admit I don't like emptying the string just because we can't avoid it
being printed, but it's not a real problem.

Cheers,

Rob




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

Reply via email to