Jeff 'Japhy' Pinyan wrote:
>
> On Nov 12, Rob Dixon said:
>
> ><[EMAIL PROTECTED]> wrote:
> >>
> >> I have this written in the script to parse it:
> >>         while ($line = <OLDFILE>)  {
> >> #               $line = $line =~ /^\s*(.*)\s*\n$/;
> >> $line =~ s/^ //;
> >> $line =~ s/ $//;
> >> $line =~ s/\t/|/g;
> >> $line =~ s/\s+/ /mg;
> >> $line =~ s/^\s*//mg;
> >> $line =~ s/\s*$//mg;
> >> $line =~ s/\s*$//mg;
> >> ###  The following lines mod the files to reflect inches and feet
> >> $line =~ s/"/in./mg;
> >> $line =~ s/'/ft./mg;
> >
> >  while (<OLDFILE>)  {
> >
> >    s/\t/|/g;   # change tab separators to pipes
>
> I'd use tr/\t/|/, and add a chomp() before-hand.
>
> >    s/^\s+//;   # remove all leading space
> >    s/\s+$//;   # and trailing space
> >    s/\s+/ /g;  # and compress multiple spaces
>
> I'm assuming by \s we're really just expecting tabs and spaces, but I'll
> include carriage returns and formfeeds.  I'd be tempted to change these
> THREE regexes:
>
>   # pick ONE of the following TWO:
>   tr/\r\t\f / /s;  # squashes consecutive [\r\t\f ]'s to a single space
>   # or
>   s/\s+/ /g;
>
>   # then do both of the following:
>   s/^ //;  # remove a SINGLE leading space
>   s/ $//;  # remove a SINGLE trailing space

Hi Jeff.

/\s/ is the same as /[\t\n\f\r ]/ so the chomp will be done
by s/\s+$// or tr/\t\n\f\r / /s.

You're right, the tr// would be faster, but I absolutely never
use it unless I need to optimise. Nor do I buy a new machine
unless I can afford one of double the clock rate: nothing else
is noticeable!

Rob



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

Reply via email to