|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alex Yemelyanov 2:5020/400 08 Nov 2001 10:40:59 To : vilfred Subject : Re: эта прога объявляет хеш хешей массивов? -------------------------------------------------------------------------------- Hello, "vilfred" <dmitriy@genphys.phys.msu.su> wrote in message news:9sbif7$l17$1@host.talk.ru... > Привет великомудрому аллу!! > > хотел написать прогу, которая умеет объявлять хешхешей массивов > > Задача, есть лог файл допустим, первая позиция айпишник вторая дата > (данные разделены запятой, насамом деле не лог файл исходно, а прайс, > первое поле айди, фторое фирма и нужно получить доступ по айди и по > фирме к нужным данным). Hужно получить доступ одного юзера за все дни в > отсортированном виде к каждой html, т.е. нужно выдрать за месяц всех > юзеров и для каждого составить статистику посещений к каждой страничке > > т.е. нужно узнать, где был любой айпишник на серваке за месяц, причем > узнать сколько раз этот юзер за месяц побывал на одной и той-же > страничке. > > т.е. хеш хешей массивов... где массивы это число запросов данного юзера > к данной страничке за месяц скажем. > > #!/usr/bin/perl > print "content-type: text/html\n\n"; > > open F, "<email-example1" or die "can't open: $!\n"; @mass=<F>; close F; > #открываем файл вида > #a,b,123,123,345,qwe > #a,b,123,123,345,we > #a,b,123,123,345,tgfh > #a,c,123,123,345,fgh > #a,c,123,123,345,dgh > #a,d,123,123,345,dfgh > #a,d,123,123,345,erre > #a,d,123,123,345,fghdhdf > #b,c,123,123,345, > #b,c,123,123,345, > #b,d,123,123,345,dfgh > #b,d,123,123,345,erre > #b,d,123,123,345,fghdhdf > > @uniq=grep{!$_{$_}++} > map{/^(.*?),/} @mass; > > #сортируем по первой позиции > #т.е. выделяем уникальные буквы до > #первой запятой, которые будут ключами > #для хеша в виде уникальных хостов посетителей > #далее имеем юзеров, для которых > #надо записать все странички, т.е. число > #просмотров каждым юзером каждой странички > #исходя из того, что логфайл велся скажем месяц > > for $gr1(@uniq){ my @h; > foreach $line(@mass){ > push @{$hash{$gr1}{$1}}, $2 if $line=~m!^$gr1,(.*?),(.*)! > } > } > > for $a(sort keys %hash){ > print "$a: \n\t{"; > for $key(sort keys %{$hash{$a}}){ > print "'$key' => "; > print "${$hash{$a}{$key}}[$#{$hash{$a}{$key}}],\n\t"; > } > print "}\n"; > } > > обращение к элементам @{$hash{$a}{$key}}идет как к элементам массива, > по крайней мере исправно выводит первый или второй элемент массива без > проблем. Верно ли что как к элементам массива? Т.е. действительно ли на > выходе этой проги хеш-хешей массивов? Я просто никогда такого не делал, > может тут есть кто кто писал такие штуки. Короче, сабж это или нет? > > Спасибо! Может проще базу данных заюзать? > > -- > TEAM [Маньяки] > Отправлено через сервер Talk.Ru - http://www.talk.ru -- # Alex S. Yemelyanov --- ifmail v.2.15dev5 * Origin: ATK (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/7824fcd9ec11.html, оценка из 5, голосов 10
|