Hello All,<br><br>I need some help on a word wrapping routine<br><br>($company) = _box_text(30,$company,1,4);<br><br>($slogan) = _box_text($slogan,$slogan,2,4,1);<br><br>I’ve been experimenting with the parameters and my results have not been how I want them to break exactly.<br><br>i.e. a test string -> “My Company Name”<br><br> result - > My<br> Company<br> Name<br><br>How would I solve this problem of breaking to soon?<br>…<br>sub _box_text($$$$$){<br><br> my $this = shift;<br><br> my $text = shift;<br><br> my $line_len = shift;<br><br> my $max_lines = shift;<br><br> my $right_pad = shift;<br><br> my $vertical_center = shift;<br><br> my $orig_text = $text;<br><br> my $n_lines = 0; #number of lines shown<br><br> my $left = $line_len;<br><br> my @lines;<br><br> my $line = ""; #first word in a string<br><br> my $word;<br><br> my $len;<br><br> my $new_text = ""; #text string is placed here<br><br> my $dropped = "";<br><br> my $i;<br><br> my $separator; <br><br> if ($text !~ /\s+$/)<br><br> {<br><br> $text = "$text" . " ";<br><br> } <br><br> while ($text =~ /\G(\S+)\s+/g)<br><br> {<br><br> $word = $1;<br><br> $separator = $2; <br><br> if ($n_lines < $max_lines)<br><br> {<br><br> if (($len = length($line)) == 0)<br><br> {<br><br> $line = $word;<br><br> $left -= length($word);<br><br> }<br><br> elsif ($left < (length($word) + 1))<br><br> {<br><br> $line =~ s/_/ /g;<br><br> push(@lines, $line);<br><br> $line = "$word";<br><br> if ($separator !~ /^\s$/)<br><br> {<br><br> $line .= "$separator";<br><br> }<br><br> $left = $line_len - length($word);<br><br> ++$n_lines;<br><br> }<br><br> else<br><br> {<br><br> $line = "$line" . " " . "$word";<br><br> $left -= (length($word) + 1);<br><br> }<br><br> }<br><br> elsif (length($dropped) == 0)<br><br> {<br><br> $dropped = $word;<br><br> }<br><br> else<br><br> {<br><br> $dropped = "$dropped" . " " . "$word";<br><br> }<br><br> } <br><br> if ($dropped != ""
<br><br> {<br><br> print "WARNING: '$orig_text' truncated: '$dropped' dropped.\n";<br><br> } <br><br> if ( (length($line) > 0) && ($n_lines < $max_lines) )<br><br> {<br><br> $line =~ s/_/ /g;<br><br> push(@lines, $line);<br><br> ++$n_lines;<br><br> } <br><br> $n_lines = 0;<br><br> foreach $line (@lines)<br><br> {<br><br> $new_text .= "\\n" if ($n_lines > 0); #text is entered here and \n char is added<br><br> $new_text .= "$line";<br><br> for ($i = 0; $i < $right_pad; $i++)<br><br> {<br><br> $new_text .= " ";<br><br> } <br><br> ++$n_lines;<br><br> } <br><br> if ($vertical_center)<br><br> {<br><br> for ($i = ($max_lines - $n_lines) / 2; $i >= 1; $i--)<br><br> {<br><br> $new_text = "\n" . $new_text;<br><br> ++$n_lines;<br><br> }<br><br> } <br><br> return ($new_text, $n_lines); <br><br>} <p>Dano<br><a href=mailto:dskryzer@hotmail.com>dskryzer@hotmail.com</a><br><a href= > </a><br>What's your major malfunction