Text::Wrap(3pm)
π NAME π
hey bestie, welcome to Text::Wrap(3pm) β straight outta the Perl Programmers Reference Guide β¨. This module is literally line wrapping to form simple paragraphs π. Itβs giving βtiny formatter that just works,β and yes, weβre gonna get into all of it π
.
β¨ SYNOPSIS β¨
okay so hereβs the vibe check π. These are the classic ways youβll see this module used, no cap:
Example 1 πΈ
use Text::Wrap;
$initial_tab = "\t"; # Tab before first line
$subsequent_tab = ""; # All other lines flush left
print wrap($initial_tab, $subsequent_tab, @text);
print fill($initial_tab, $subsequent_tab, @text);
$lines = wrap($initial_tab, $subsequent_tab, @text);
@paragraphs = fill($initial_tab, $subsequent_tab, @text);
Example 2 π¦
use Text::Wrap qw(wrap $columns $huge);
$columns = 132; # Wrap at 132 characters
$huge = 'die';
$huge = 'wrap';
$huge = 'overflow';
Example 3 π
use Text::Wrap;
$Text::Wrap::columns = 72;
print wrap('', '', @text);
π DESCRIPTION π
Text::Wrap::wrap() is a very simple paragraph formatter, and honestly? It ate π. It formats a single paragraph at a time by breaking lines at word boundaries. Indentation is controlled independently for the first line ($initial_tab) and all subsequent lines ($subsequent_tab). Please note: $initial_tab and $subsequent_tab are the literal strings that will be used β it is unlikely you would want to pass in a number, bestie, so pls donβt do that π.
Text::Wrap::fill() is a simple multi-paragraph formatter. It formats each paragraph separately and then joins them together when itβs done. It will destroy any whitespace in the original text π. It breaks text into paragraphs by looking for whitespace after a newline. In other respects, it acts like wrap().
wrap() compresses trailing whitespace into one newline, and fill() deletes all trailing whitespace. Both wrap() and fill() return a single string π.
Unlike the old Unix fmt(1) utility, this module correctly accounts for any Unicode combining characters (such as diacriticals) that may occur in each line for both expansion and unexpansion. These are overstrike characters that do not increment the logical position. Make sure you have the appropriate Unicode settings enabled, iykyk β¨.
π¦ OVERRIDES π¦
Text::Wrap::wrap() has a number of variables that control its behavior. Because other modules might be using Text::Wrap::wrap(), it is suggested that you leave these variables alone! If you canβt do that, then use "local($Text::Wrap::VARIABLE) = YOURVALUE" when you change the values so that the original value is restored. This local() trick will not work if you import the variable into your own namespace. periodt π
.
$Text::Wrap::columnsβ Lines are wrapped at$Text::Wrap::columnscolumns (default value: 76).$Text::Wrap::columnsshould be set to the full width of your output device. In fact, every resulting line will have length of no more than"$columns - 1"π«Ά.$Text::Wrap::breakβ It is possible to control which characters terminate words by modifying$Text::Wrap::break. Set this to a string such as'[\s:]'(to break before spaces or colons) or a pre-compiled regexp such asqr/[\s']/(to break before spaces or apostrophes). The default is simply'\s'; that is, words are terminated by spaces. (This means, among other things, that trailing punctuation such as full stops or commas stay with the word they are βattachedβ to.) Setting$Text::Wrap::breakto a regular expression that doesnβt eat any characters (perhaps just a forward look-ahead assertion) will cause warnings β οΈ.
Beginner note, bestie π: In example 2 above,$columnsis imported into the local namespace, and set locally. In example 3,$Text::Wrap::columnsis set in its own namespace without importing it. Thatβs the whole difference, fr fr.
$Text::Wrap::unexpandβText::Wrap::wrap()starts its work by expanding all the tabs in its input into spaces. The last thing it does is to turn spaces back into tabs. If you do not want tabs in your results, set$Text::Wrap::unexpandto a false value π ββοΈ.$Text::Wrap::tabstopβ Likewise, if you do not want to use 8-character tabstops, set$Text::Wrap::tabstopto the number of characters you do want for your tabstops β¨.$Text::Wrap::separatorβ If you want to separate your lines with something other than"\n", then set$Text::Wrap::separatorto your preference. This replaces all newlines with$Text::Wrap::separatorπ.$Text::Wrap::separator2β If you just want to preserve existing newlines but add new breaks with something else, set$Text::Wrap::separator2instead πΈ.$hugeβ When words that are longer than$columnsare encountered, they are broken up.wrap()adds a"\n"at column$columns. This behavior can be overridden by setting$hugeto'die'or to'overflow'. When set to'die', large words will causedie()to be called π. When set to'overflow', large words will be left intact π.
Historical notes, because lore matters π«Ά:'die'used to be the default value of$huge. Now,'wrap'is the default value.
π EXAMPLES π
Example: book-style indented paragraph π
Code:
print wrap("\t","",<<END);
This is a bit of text that forms
a normal book-style indented paragraph
END
Result:
" This is a bit of text that forms
a normal book-style indented paragraph
"
Example: separator goes brrr β¨
Code:
$Text::Wrap::columns=20;
$Text::Wrap::separator="|";
print wrap("","","This is a bit of text that forms a normal book-style paragraph");
Result:
"This is a bit of|text that forms a|normal book-style|paragraph"
π«Ά SEE ALSO π«Ά
For correct handling of East Asian half- and full-width characters, see Text::WrapI18N πΈ. For more detailed controls: Text::Format π.
π AUTHOR π
David Muir Sharnoff <cpan@dave.sharnoff.org> with help from Tim Pierce and many many others. iconic behavior, honestly πβ¨.
π LICENSE π
Copyright (C) 1996-2009 David Muir Sharnoff. Copyright (C) 2012-2013 Google, Inc. This module may be modified, used, copied, and redistributed at your own risk. Although allowed by the preceding license, please do not publicly redistribute modified versions of this code with the name "Text::Wrap" unless it passes the unmodified Text::Wrap test suite π
.
and thatβs the whole page, bestie π«Ά β this oneβs serving perl v5.42.3, dated 2026-11-03, and itβs literally Text::Wrap(3pm) signing off πβ¨π
π¦ where this page comes from
- alpine 3.24: perl-doc 5.42.3-r0 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms