|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Nikolay Pichtin 2:5056/30 14 Oct 2000 21:00:21 To : Alexander Babanov Subject : Re: подсчитать количество вхождений слова -------------------------------------------------------------------------------- TS>> Как сделать сабж? Есть файл и нужно узнать сколько раз в нем TS>> упоминается слово 'некое слово'. AB> perldoc -q count Hаверняка тебе ответят, что, мол что-то у тебя или старое стоит или *nix поставь. = Вставка = There are a number of ways, with varying efficiency: If you want a count of a certain single character (X) within a string, you can use the `tr///' function like so: $string = "ThisXlineXhasXsomeXx'sXinXit"; $count = ($string =~ tr/X//); print "There are $count X characters in the string"; This is fine if you are just looking for a single character. However, if you are trying to count multiple character substrings within a larger string, `tr///' won't work. What you can do is wrap a while() loop around a global pattern match. For example, let's count negative integers: $string = "-9 55 48 -2 23 -76 4 14 -44"; while ($string =~ /-\d+/g) { $count++ } print "There are $count negative numbers in the string"; fewer line than you expect. $lines = 0; open(FILE, $filename) or die "Can't open `$filename': $!"; while (sysread FILE, $buffer, 4096) { $lines += ($buffer =~ tr/\n//); } close FILE; This assumes no funny games with newline translations. = Вставка = -- Hиколай. * Барыш без накладу не живет. (От Фоменко) ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД --- * Origin: Где начало того конца, которым оканчивается начало? (2:5056/30) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/181339e8c9bf.html, оценка из 5, голосов 10
|