|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : vilfred 2:5020/400 07 Nov 2001 19:04:01 To : All Subject : эта прога объявляет хеш хешей массивов? -------------------------------------------------------------------------------- Привет великомудрому аллу!! хотел написать прогу, которая умеет объявлять хешхешей массивов Задача, есть лог файл допустим, первая позиция айпишник вторая дата (данные разделены запятой, насамом деле не лог файл исходно, а прайс, первое поле айди, фторое фирма и нужно получить доступ по айди и по фирме к нужным данным). 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 --- ifmail v.2.15dev5 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6488de1bb0e7.html, оценка из 5, голосов 10
|