Пользователи моего форума часто норовят оставить сообщения, в которых есть длинные слова, типа "пооооооооооооммммммммммммооооооооггггииииииттттее" или "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!". Они иногда вызывают горизонтальную полосу прокрутки.
Хочу написать код, ставящий пробел в последовательность непробельных символов, превышающую по длине n(например 40).
Пытался разными методами, получается плохо.
Вот один из вариантов, на практике работающий криво (Он разбивает сообщение на подстроки по сто символов, и, если внутри какой-то подстроки есть 50 или более непробельных символов подряд, ставит поседине пробел):
my $c= 1 + int length($message)/100 ;
for (my $i=0;$i<$c; $i++)
{
$buffer = undef;
$buffer = substr($message,$i*100,100);
if($buffer =~ /\\S{50,}/)
{
my $part1 = substr($buffer,0,50);
my $part2 = substr($buffer,50,50);
$buffer = $part1.\' \'.$part2;
}
$message2 .= $buffer;
}
$message = $message2;
Хотелось всё-таки создать нормально работающий код. Своими силами пока не получается.