Thank you. This works well. I will put this routine in a sub that
takes $paraIN, $linelength and $linefeed as parameters and return
$paraOUT.
One other thing I would like is to respect the original spacing
between words. So I am able to re-create $paraIN from $paraOUT by
removing any embedded $linefeed characters. Any ideas?
On Sat, 19 Oct 2002 12:48:22 +1000, [EMAIL PROTECTED]
(Colin Johnstone) wrote:
>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]