Hi Chris,

I had to do something similar I am producing a text newsletter I do not want my lines 
of text in each paragraph to exceed 75 characters. Basically you take your string of 
text and assign the full words to an array you can use the split function to do this. 
So now you've got your array of words, you just loop through this constructing the 
sentences to the required length then you output a carriage return '\n' or a <br> 
depending on the display medium. Start over again until there are no more words left 
in the array. Anyway take what you need from my code below.

#!/usr/bin/perl

print "Content-Type: text/html\n\n";

#sample headings
@arrHeadings[0] = "School is in at the Australian National Field Days";
@arrHeadings[1] = "Wiggles' colourful splash to Minister's swim scheme launch";
@arrHeadings[2] = "Student's raise \$81,000 for Stewart House ";

#sample paragraphs
@arrParas[0] = "Public schools are adding a new dimension at Orange's Australian 
National Field Days - long recognised as a leading educational resource for farmers.";
@arrParas[1] = "Popular international children's entertainers, The Wiggles, added a 
splash of colour when the Minister for Education and Training, John Watkins, launched 
the 2002 School Swimming Scheme.";
@arrParas[2] = "Public school students throughout NSW and the ACT have excelled in 
their fundraising for the Stewart House charity this year, raising \$81,000 in the 
annual Stewart House Donation Drive raffle.";

#initialise output string to "";
my $strOutput = "";
while( @arrHeadings ){
  #assign the first element of array headings to $heading
  my $heading = shift(@arrHeadings);
  #I want to put a space between each paragraph
  if($strOutput ne ""){
    $strOutput .= "<br>";
  }
  #add the heading to the output string
  $strOutput .= "\>\> $heading<br>";
  #assign the first element of array paragraphs to $para
  my $para = shift(@arrParas);
  #test length of $para if less than 75 characters then I don't need
  #to manipulate it, I just add it to the output string.
  if(length($para)<=75){
    $strOutput .= "$para<br>";
  }
  #because length of $para > 75 I need to wrap each line
  #firstly I break each line up into its component words
  elsif(length($para)>75){
    my $line = "";
    my @arrWords = split( / /, $para);
    #loop wile elements in array words
    while(@arrWords){
      #get and remove first element of arrwords
      $word = shift(@arrWords);
      if((length($line)+length($word))<=75){
        $line .= "$word ";
      }
      elsif((length($line)+length($word))>75){
        $strOutput .= "$line<br>";
        $line = "";
        $line .= "$word ";
      }
    }
    #I have jumped out of the loop but is their elements in $line that
    #need to be added to #strOutput
    if(length($line)>0){
      $strOutput .= "$line<br>";
    }
  }
}

print "$strOutput";

It worked for me, I hope it works for you.

Colin Johnstone
Website Project Officer
Corporate Website Unit
NSW Department of Education And Training
AUSTRALIA


-----Original Message-----
From: chris [mailto:chris@;home.com]
Sent: Saturday, October 19, 2002 11:43
To: [EMAIL PROTECTED]
Subject: How to wrap a sentence?


Given a lengthy string of words, I need to limit the line length and
wrap it into multiple lines by introducing line breaks. Do not care
about sentence or paragraph format, just respect full words.

How do I do this?

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

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

Reply via email to