For the general case of breaking any long line into a bunch of lines having some maximum width, you want Text::Wrap. Others have stated better ideas for your specific case, but you could also do it like this:
$Text::Wrap::$columns = 50;
$new_string = Text::Wrap::wrap( '', '<br /><br />', $string );
You'll notice that the wrap function will always include a "\n" as part of the line break (it appends "\n" at the end of each output chunk), and the width of the "indent" args (the
<br /><br /> for non-initial lines, in this case) will be counted as part of the final line-width.
I haven't studied the entire man page myself yet, and there's probably lots of flexibility...
But if you're really picky and you believe that Text::Wrap won't do exactly what you want, then something like the following would be simpler than the code you posted:
my $new_string;
my $width = 50;
while ( length( $string ) > $width ) {
my $brksp = rindex( $string, ' ', $width );
$new_string .= substr( $string, 0, $brksp ) . '<br /><br />';
$string = substr( $string, $brksp+1 );
}
$new_string .= $string;
(update: replaced literal "50" with $width in "while" condition)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.