Обратите внимание, что сопоставление с образцом не было идеальным, поэтому с ним была сопоставлена группа alt.music.perl-jam, наряду с группами новостей, которые действительно имеют отношение к этому языку. Код сценария приведен в листинге ниже.
0: # ! /usr/local/bin/perl"'-w 1: # Файл: news_groups.pl 2: use strict; 3: use Net::NNTP; 4: my $nntp = Net::NNTP->new() or die "Couldnlt connect: $!n"; 5: print_stats($nntp,$_) while $_ = shift; 6: $nntp->quit; 7.: sub print_stats { 8 : my $nntp = shift;. . 9: my $pattern = shift; 10 : my $groups = $nntp->newsgroups($pattern); 11: return print "$pattern: No matching newsgroupsn" 12: unless $groups && keys %$groups; 13: for my $g (sort keys %$groups) { 14: my ($articles,$first,$last) = $nntp->group($g); 15: print "%-60s %5d articlesn",$g, $articles; 16: } 17: }
Проведем анализ программы.
Строки 1-3. Загрузка модулей. Включена строгая проверка синтаксиса и загружен модуль Net::NNTP.
Строка 4. Создание нового объекта Net::NNTP. Вызывается метод Net::NNTP->new () для подключения к хосту службы сетевых новостей, если хост явно не указан, модуль Net::NNTP выбирает подходящий хост из переменных среды или применяет сервер NNTP, предусмотренный по умолчанию при установке утилит libnet.
Строки. 5, 6. Вывод статистических данных и выход. Для каждого параметра в командной строке вызывается подпрограмма print_stats () для поиска по образцу и вывода сопоставленных с ним имен групп новостей. После этого вызывается метод quit() объекта NNTP.
Строки 7-1. Подпрограмма print_stats(). В подпрограмме print_stats() вызывается метод newsgroups() объекта NNTP для поиска групп новостей, имена которых соответствуют образцу. В случае успешного выполнения метод newsgroups() возвращает ссылку на хеш, ключами которого являются имена групп новостей, а значениями — краткие описания групп новостей. Если метод newsgroups() возвращает значение undef или пустое значение, выполняется возврат. В ином случае происходит сортировка имен групп по алфавиту и проход по этим именам в цикле. Для каждой группы вызывается метод group () объекта NNTP для получения списка с информацией о числе статей в группе и номерах сообщений первой и последней статей. Выводится имя группы новостей и число содержащихся в ней статей.
2014-02-21 01:57:13
это интересно Инновации всегда являются двигателем прогресса, но мало кто знает об Интернет портале представляющим передовые идеи малого бизнеса. Таковым является сайт www.ideibiznesa.org , на котором представлены реальные и самые прибыльные новые бизнес-идеи реального времени. Здесь можно найти не только идеи, но реально работающие схемы развития бизнеса для любого небольшого населенного пункта.