
Untitled
By: a guest on
Jun 25th, 2012 | syntax:
None | size: 2.34 KB | hits: 12 | expires: Never
How to efficiently get a number of words from a text using perl?
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; }
}
#!/usr/bin/env perl
use strict;
use warnings;
my $text = <<TXT;
Регулярните изрази ни позволяват да търсим шаблони в данните си.
Повечето букви и символи просто ще съвпадат със самите себе си.
Например, регулярният израз "test" просто и точно ще съвпада със
символния низ "test". Можете да включите режим,
нечувствителен към разликата между малки и големи букви, който ще
позволи да съвпадне също така и с "Test" или "TEST". Има изключения от
това правило, някои символи са особени и не съвпадат със
самите себе си. Вместо това те сигнализират...
TXT
my @words = $text =~ m/ s* ( S+ ) /gmsx;
$#words = 49;
print "@wordsn";
$words = $1 if $text=~/^s*((?:S+(?:s+|$)){0,50})/;
my @words;
push @words, $1 while @words < 50 && $text =~ /s*(S+)/g;