Мне нужно получить первые ~ 50 слов из текста для подачи заявки пользователям моего приложения.Я сделал следующее:
use strict;use warnings;use utf8;
binmode(STDOUT, ':utf8');
my $text = <<TXT;
Регулярните изрази ни позволяват да търсим шаблони в данните си.
Повечето букви и символи просто ще съвпадат със самите себе си.
Например, регулярният израз "test" просто и точно ще съвпада със
символния низ "test". Можете да включите режим,
нечувствителен към разликата между малки и големи букви, който ще
позволи да съвпадне също така и с "Test" или "TEST". Има изключения от
това правило, някои символи са особени и не съвпадат със
самите себе си. Вместо това те сигнализират...
TXT
my $c = 0;
my $collected = substr($text, 0, 10);
while ($text =~ /$collected/) {
$c += 10;
$collected = substr($text, 0, $c);
print $collected, $/;
#sleep 1;
my @words = split(/\s+/, $collected);
if (@words >= 49) { last; }
}
это прекрасно работает, но я обеспокоен эффективностью кода.
Представьте, что я должен сделать то же самое для многих, многих текстов.Должен быть более умный, более изощренный способ, но я не могу понять это.
Заранее спасибо.