this is a one liner ...<br><br>$exp =~ s/(\s|\r\n)\1+/\1/g;<br><br>you should replace the * with a +<br>otherwise
 you're wasting time replacing something with itself.  the regex matches
 single blanks, which are replaced with single blan<br><br><div class="gmail_quote">On Sat, Oct 27, 2012 at 8:53 PM, Chris Jones <span dir="ltr"><<a href="mailto:cj@enersave.ca" target="_blank">cj@enersave.ca</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
The following two regex work.<br>
Expression before:<br>
if(Local(TYPE) == 1) then<br>
  1.25<br>
<br>
else<br>
  UNCHANGED<br>
endif<br>
<br>
Run script.<br>
$expression =~ s/(\s)\1*/\1/g;<br>
$expression  =~ s/(\r\n)+/\r\n/g;<br>
<br>
Expression after:<br>
if(Local(TYPE) == 1) then<br>
 1.25<br>
else<br>
 UNCHANGED<br>
endif<br>
<br>
There is likely a way to make that one expression but it is working for my needs.<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
At 08:18 PM 27/10/2012, Chris Jones wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am reading a memo field from an access database so the carriage return/line feeds are in the memo field. I am not sure what character is used but \n doesn't seem to be correct.<br>
<br>
<br>
<br>
<br>
<br>
At 06:45 PM 27/10/2012, Tom Legrady wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Your problem is that you're stuffing back to much, in the 'replace' have of the s//. You just want to stick in one space. \1 is ALL the spaces you found; and \s is only special in the search half; in the replace half it's just the letter 's'.<br>

<br>
my $SPACE = q{ };<br>
$expression =~ s/(\s+)/$SPACE/g;<br>
<br>
To deal with empty lines, you can search for multiple newlines with nothing but optional spaces or tabs in between:<br>
<br>
$lines =~ s/\n[ \t]*\n/\n/<br>
<br>
Personally, I'm more likely to process input files line by line, so I would simply skip "empty" lines.<br>
<br>
LINE:<br>
while ( my $line = <$fh> ) {<br>
   next LINE if $line =~ m{^\s*$}m;<br>
   chomp $line;<br>
   ...<br>
}<br>
</blockquote>
<br>
>><br>
Christopher Jones, P.Eng.<br>
Suite 1801, 1 Yonge Street<br>
Toronto, ON M5E1W7<br>
Tel. <a href="tel:416-203-7465" value="+14162037465" target="_blank">416-203-7465</a><br>
Fax. <a href="tel:416-946-1005" value="+14169461005" target="_blank">416-946-1005</a><br>
email <a href="mailto:cj@enersave.ca" target="_blank">cj@enersave.ca</a><br>
<br>
______________________________<u></u>_________________<br>
toronto-pm mailing list<br>
<a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/toronto-pm</a><br>
</blockquote>
<br>
>><br>
Christopher Jones, P.Eng.<br>
Suite 1801, 1 Yonge Street<br>
Toronto, ON M5E1W7<br>
Tel. <a href="tel:416-203-7465" value="+14162037465" target="_blank">416-203-7465</a><br>
Fax. <a href="tel:416-946-1005" value="+14169461005" target="_blank">416-946-1005</a><br>
email <a href="mailto:cj@enersave.ca" target="_blank">cj@enersave.ca</a><br>
<br>
______________________________<u></u>_________________<br>
toronto-pm mailing list<br>
<a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/toronto-pm</a><br>
</div></div></blockquote></div><br>