2009/12/20 Dr.Ruud <rvtol+use...@isolution.nl <rvtol%2buse...@isolution.nl>>

> sftriman wrote:
>
>> I use this series of regexp all over the place to clean up lines of
>> text:
>>
>> $x=~s/^\s+//g;
>> $x=~s/\s+$//g;
>> $x=~s/\s+/ /g;
>>
>> in that order, and note the final one replace \s+ with a single space.
>>
>
> The g-modifier on the first 2 is bogus
> (unless you would add an m-modifier).
>
> I currently tend to write it like this:
>
>    s/\s+\z//, s/\A\s+//, s/\s+/ /g, for $x;
>
> So first remove tail spaces (less to lshift next).
> Then remove head spaces. Then normalize.
>
>
> For a multi-line buffer you can do it like this:
>
> perl -wle '
>
>  my $x = <<"EOT";
>    123    456   \t
> abc def
> \t\t\t\t        \t\t\t\t
>   ***     ***   ***   \t
> EOT
>
>  s/^\s+//mg, s/\s+$//mg, s/[^\S\n]+/ /g for $x;


I know what it does, but I haven't seen this form of *for* before. Where can
I find the description of this syntax in perldoc?

Thanks.

>

 $x =~ s/\n/>\n/g;
>  print $x, "<";
> '
>
> 123 456>
> abc def>
> *** *** ***<
>
> --
> Ruud
>
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>
>


-- 
missing the days we spend together

Reply via email to