"John W. Krahn" wrote:
> 
> Stuart Clemons wrote:
> >
> > I'm trying to cleanup and format this text file of user names, so that I
> > have one column of user names.  Here's the text file:
> >
> > The request will be processed at a domain controller for domain FOOBAR.
> >
> > Group name      Misc
> > Comment        These are the FOOBAR users
> >
> > Members
> >
> > -------------------------------------------------------------------------------
> > arod                     cschilling               csenior
> > ecostello                ffrank                   gbennett
> > LBird                    PMartinez
> > The command completed successfully.
> 
> open FH, 'c:/foobar.txt' or die "sourcefile open failed - $!";
> while ( <FH> ) {
>     next if 1 .. /^-+$/;
>     last if /^The command completed successfully/;
>     print "$_\n" for /\S+/g;
> }

Someone (off-list) asked for an explanation of this code.

while ( <FH> ) {

This reads the current line from the filehandle FH into the $_ variable
and sets the $. variable to the current line number.

    next if 1 .. /^-+$/;

Using a constant integer with the range operator in a while loop is a
shortcut that compares $. to the constant so the range is everything
from the first line to the line that contains only hyphens.  next sends
execution back to the beginning of the loop.

    last if /^The command completed successfully/;

last exits the loop if the current line starts with the text 'The
command completed successfully'.

    print "$_\n" for /\S+/g;

The regex in list context creates a list of all the non-whitespace
strings from the current line and each member of the list is printed out
with a trailing newline.  You could also create the list with the split
function:

    print "$_\n" for split;



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to