Поскольку Text::Wrap
по какой-то причине не работает для OP, вот решение с использованием регулярного выражения:
my $longstring = "lots of text to wrap, and some more text, and more "
. "still. thats right, even more. lots of text to wrap, "
. "and some more text.";
my $wrap_at = 45;
(my $wrapped = $longstring) =~ s/(.{0,$wrap_at}(?:\s|$))/$1\n/g;
print $wrapped;
, которое печатает:
lots of text to wrap, and some more text, and
more still. thats right, even more. lots of
text to wrap, and some more text.