sub findwrappoint { my ($string, $width) = @_; my $cut = 0; my $char = 0; while( $string =~ /(\e[[\d;]*m)|([^ ]+)|( +)/g ) { $3 and $char <= $width and $cut = $+[3]; $char += $1 ? 0 : $2 ? length $2 : length $3;