- RU.PERL ----------------------------------------------------------- RU.PERL - Msg : #5586 [620] От : Konstantin Tokar 2:5020/400 01 февраля 05, 15:55 Кому : Anton Potekhin 12 февраля 05, 20:59 Тема : Re: array ------------------------------------------------------------------------------- From: Konstantin TokarAnton Potekhin wrote: > Hello, Serguei! > You wrote to Anton Potekhin on Tue, 01 Feb 2005 13:31:58 +0300: > > AP>> контуженно написал :) я не это имел ввиду.... нужно кол-во > AP>> определенного элемента в массиве > > ST> Может, тебе стоит хэши использовать, а не массивы? > ST> Что за задача стоит? > > Может :) > > короче такая задача такая.... есть большой набор слов разделенных > пробелами.... нужно выбрать все уникальные слова и посчитать их кол-во... > т.е. сколько каждое слово встречается в документе. Hа php я их слаживал в Уникальные слова встречаются один раз. Каждое слово - возможно несколько раз Что именно тебе надо - ты не написал. > массив потом array_count_values и удалял уникальные array_unique... и > все.... теперь нужно сделать это на перле... вот и ищу самые оптимальные > решения ;) при условие того что я в перле не бум бум :) Так что если > подсоветует что дельное буду благодарен Вот пример выборки слов из входного потока и подсчёт их количества. use strict; my %words; while (<>) { chomp; my @words = split /\s+/; map { $words{$_}++; } @words; } ## end while (<>) while ( my ( $word, $count ) = each %words ) { print "$count\t'$word'\n"; } ## end while ( my ( $word, $count... Если положить в a.pl и запустить, perl -w a.pl a.txt выдаст 3 '}' 4 '' 1 '"$count\t'$word'\n";' 2 '$word,' 1 '%words;' 1 'map' 1 '$count...' 1 '$count' 4 '(' 2 ')' 1 'chomp;' 2 '##' 1 '%words' 1 'each' 1 '@words' 1 'print' 1 'use' 1 '$words{$_}++;' 1 '/\s+/;' 2 'end' 4 'my' 1 'split' 4 'while' 1 'strict;' 3 '{' 2 '=' 2 '(<>)' 1 '@words;' --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400)