sub break_width {
my ($str_ref, $width, $ws) = @_;
$ws ||= '(?!)';
for ($$str_ref) {
my $single = qr/$ws|\n|\r|(?s:.)/;
return ("", 0) unless m/\G((?:$single){1,$width})/gc;
(my $result = $1) =~ s/$ws|\n|\r/ /g;
return ($result, substr($_,pos)=~m/\S/)
}
}
use Perl6::Form;
$data = "You can play no part but Pyramus;\n"
. "for Pyramus is a sweet-faced man; ";
print form \%(break=>\&break_width), "|\{[[[[[\}|", $data;