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.