How to efficiently get a number of words from a text using perl? -
I need to get ~ 50 words before the text to type the users of my application. I have done the following :
Use strict, use precautions; Use utf8; Binomod (STDOUT, ': utf8'); My $ text = & lt; & Lt; TXT; Ð ÐμÐ³Ñ ?? Ð »Ñ ?? Ñ ?? Ð½Ð¸Ñ ?? Ðμ DD Ñ ?? Ð ° Ð · D ни поР· воР»n ?? вР° N ?? Ð'Ð ° N ?? Ñ ?? Ñ ?? Ñ ?? им Ñ ?? Ð ° Ð ± Ð »Ð¾Ð½Ð¸ в Ð'Ð ° ннÐÑÑ ?? Ðμ Ñ ?? D. Ð ?? овÐμÑ ?? ÐμÑ ?? о Ð ± n ?? кви dn ?? имвоР»D Ð¿Ñ ?? ÐÑÑ ?? Ñ ?? о Ñ ?? Ðμ Ñ ?? Ñ ?? впР° Ð'Ð ° N ?? Ñ ?? Ñ ?? Ñ ?? Ñ ?? Ð ° Ð Ð Ð Ñ? Ð Ð - Ñ? ÐμÐ ± Ðμ Ñ ?? и. Ð ?? Ð ° Ð¿Ñ ?? и Ð ÐμÑÑÑ ??, Ñ ?? ÐμÐ³Ñ ?? Ð »Ñ ?? Ñ? нР- ÑÑ Ñ ?? DD Ñ ?? Ð ° Ð · "test" Ð¿Ñ ?? ÐÑÑ ?? Ñ ?? оdn ?? ÐÑÑ ?? но Ñ ?? Ðμ Ñ ?? Ñ ?? впР° Ð '° Ñ ?? Ñ ?? Ñ ?? Ñ ?? имвоР»Ð½ÐÑÑ ??? ниР· "test" Ð ?? ожÐμÑ ?? Ðμ Ð'Ð ° вкР»n ?? Ñ ?? DN ?? Ðμ Ñ ?? Ðμжим, нÐμÑ ?? Ñ ?? Ð²Ñ ?? Ñ ?? ви Ñ ?? ÐμÐ »Ðμн ÐºÑ ?? м Ñ ?? Ð ° Ð · Ð »Ð¸ÐºÐ ° N ?? Ð ° мÐμжÐ'Ñ ?? мР° Ð »ÐºÐ¸ d гол Ðμми Ð ± n ?? кви, койÑÑ ?? о Ñ ?? Ðμ поР· вÐÐÐ »D Ð'Ð ° N ?? Ñ ?? впР° Ð'нÐμ- Ñ ?? Ñ ?? Ñ ?? о Ñ ?? Ð ° кР° и Ñ ?? "Test" иР»Ð¸" test "Ð ?? Ð Ð Ð ° иР· кР»Ñ ?? Ñ ?? ÐμнÐÐÑÑ ?? ÐÑÑ ?? Ñ ?? овР° Ð¿Ñ ?? Ð ° виР»Ð¾, Ð½Ñ ?? кои Ñ ?? имвоР»DN ?? Ð ° оÑÑ ?? оР± Ðμни d нÐμ Ñ ?? Ñ ?? впР° Ð'Ð ° N ?? Ñ ?? Ñ ?? Ñ ?? Ñ ?? Ð ° Ð Ð Ð Ñ? Ð Ð - Ñ? ÐμÐ ± Ðμ Ñ ?? и. Ð ?? мÐμÑ ?? Ñ ?? о Ñ ?? овР° N ?? Ðμ Ñ ?? игнР° Ð »DD · DN ?? Ð ° N ?? ... TXT my $ c = 0; My $ accumulated = substr ($ text, 0, 10); While ($ text = ~ / $ combined) / $ c + = 10; $ Accumulated = subtracut ($ text, 0, $ c); Print $ together, $ /; #sleep1; My @words = partition (/ \ s + /, $ accumulated); If (@words> = 49) {last; }} This works fine, but I'm worried about the efficiency of the code.
Imagine that I do this for many people, many texts
"Text">
Try:
#! Use / usr / bin / env perl strict; Use warnings; My $ text = & lt; & Lt; TXT; Ð ÐμÐ³Ñ ?? Ð »Ñ ?? Ñ ?? Ð½Ð¸Ñ ?? Ðμ DD Ñ ?? Ð ° Ð · D ни поР· воР»n ?? вР° N ?? Ð'Ð ° N ?? Ñ ?? Ñ ?? Ñ ?? им Ñ ?? Ð ° Ð ± Ð »Ð¾Ð½Ð¸ в Ð'Ð ° ннÐÑÑ ?? Ðμ Ñ ?? D. Ð ?? овÐμÑ ?? ÐμÑ ?? о Ð ± n ?? кви dn ?? имвоР»D Ð¿Ñ ?? ÐÑÑ ?? Ñ ?? о Ñ ?? Ðμ Ñ ?? Ñ ?? впР° Ð'Ð ° N ?? Ñ ?? Ñ ?? Ñ ?? Ñ ?? Ð ° Ð Ð Ð Ñ? Ð Ð - Ñ? ÐμÐ ± Ðμ Ñ ?? и. Ð ?? Ð ° Ð¿Ñ ?? и Ð ÐμÑÑÑ ??, Ñ ?? ÐμÐ³Ñ ?? Ð »Ñ ?? Ñ? нР- ÑÑ Ñ ?? DD Ñ ?? Ð ° Ð · "test" Ð¿Ñ ?? ÐÑÑ ?? Ñ ?? оdn ?? ÐÑÑ ?? но Ñ ?? Ðμ Ñ ?? Ñ ?? впР° Ð '° Ñ ?? Ñ ?? Ñ ?? Ñ ?? имвоР»Ð½ÐÑÑ ??? ниР· "test" Ð ?? ожÐμÑ ?? Ðμ Ð'Ð ° вкР»n ?? Ñ ?? DN ?? Ðμ Ñ ?? Ðμжим, нÐμÑ ?? Ñ ?? Ð²Ñ ?? Ñ ?? ви Ñ ?? ÐμÐ »Ðμн ÐºÑ ?? м Ñ ?? Ð ° Ð · Ð »Ð¸ÐºÐ ° N ?? Ð ° мÐμжÐ'Ñ ?? мР° Ð »ÐºÐ¸ d гол Ðμми Ð ± n ?? кви, койÑÑ ?? о Ñ ?? Ðμ поР· вÐÐÐ »D Ð'Ð ° N ?? Ñ ?? впР° Ð'нÐμ- Ñ ?? Ñ ?? Ñ ?? о Ñ ?? Ð ° кР° и Ñ ?? "Test" иР»Ð¸" test "Ð ?? Ð Ð Ð ° иР· кР»Ñ ?? Ñ ?? ÐμнÐÐÑÑ ?? ÐÑÑ ?? Ñ ?? овР° Ð¿Ñ ?? Ð ° виР»Ð¾, Ð½Ñ ?? кои Ñ ?? имвоР»DN ?? Ð ° оÑÑ ?? оР± Ðμни d нÐμ Ñ ?? Ñ ?? впР° Ð'Ð ° N ?? Ñ ?? Ñ ?? Ñ ?? Ñ ?? Ð ° Ð Ð Ð Ñ? Ð Ð - Ñ? ÐμÐ ± Ðμ Ñ ?? и. Ð ?? мÐμÑ ?? Ñ ?? о Ñ ?? овР° N ?? Ðμ Ñ ?? игнР° Ð »DD · DN ?? Ð ° N ?? ... TXT my @words = $ text = ~ m / \ * * (\ S +) / gmsx; $ # Word = 49; Print "@words \ n";
Comments
Post a Comment