perl-Text-Tabs+Wrap (expand and unexpand tabs + line wrapping)
Text::Tabs does most of what the unix utilities expand(1) and unexpand(1) do.
Given a line with tabs in it, expand replaces those tabs with the appropriate
number of spaces. Given a line with or without tabs in it, unexpand adds tabs
when it can save bytes by doing so, like the unexpand -a command.
Text::Wrap::wrap() is a very simple paragraph formatter. It formats a single
paragraph at a time by breaking lines at word boundaries. Indentation is
controlled for the first line ($initial_tab) and all subsequent lines
($subsequent_tab) independently. 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.