![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Uзверь, а не скромный вопрос можно? Это задачка откуда?
|
|||
|
||||
| Uзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.9.2009 Репутация: нет Всего: нет |
Вот номер абонента 0 A9710189175023971 начиная с восьмерки
А вот это внутренний номер абонента (внутри организации) 5104 И число с длительностью 03/12 13:06:52 00:00:18 А что насчет пробелов то их число значения не имеет. лог приведен в своем натуральном виде. Пока вот думаю что да как и куда... Добавлено через 1 минуту и 20 секунд Задачка с места работы...познавательно развивающая |
|||
|
||||
| Uзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.9.2009 Репутация: нет Всего: нет |
Как я понимаю мне нужно организовать чтение из лог файла по заданным параметрам выбора элементов... которые должны выводиться на экран?
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Для начала попробуйте добавить что-нибудь в такой коротенький скрипт:
|
|||
|
||||
| Uзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.9.2009 Репутация: нет Всего: нет |
О-o спасибо!!! Щас буду пробывть запускать
|
|||
|
||||
| Uзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.9.2009 Репутация: нет Всего: нет |
Привет amg а можно если тебя не затруднит немного пояснить вот эту строчку из програмки
$hash{$1}++; Ее смысл Насколько я понял $sash это переменная. Два плюса -приращение на 1 (инкремент) . А вот про фигурные скобки и их содержимое не очень понял. И если можно вот в этой стоке foreach (sort {$a<=>$b} keys %hash) такой кусок с переменными {$a<=>$b} ,какой смысл несет в себе такая запись для чего они служат? В описалове узнал только о временной переменной $i инициализирующаяся нулем которая создается при старте фора. Это сообщение отредактировал(а) Uзверь - 2.10.2009, 08:12 |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
$hash{ключ} -
$1 - из регулярного выражения, там где (\d+) ++ записывает дальше можно посмотреть что в хэше, сделать
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
$1 -- в ней номер телефона из предыдущего удачно сработавшего регулярного выражения. Этот номер будет ключом хэша %hash
Коеструкция $hash{$1}++; создает элемент хэша с данным ключом, если этого элемента не было и затем инкрементирует его значение (undef+1=1). Если элемент хэша с данным ключом уже есть, то его значение просто инкрементируется. Таким образом, получаем хэш, в котором ключи -- это номера телефонов (уникальные, в хэше иных быть не может по определению), а значения -- сколько раз этот номер телефона встречается. Я понимаю, что приведенный мной код -- это не то, что Вам нужно, но в качестве затравки послужить может. Далее, очевидно, нужно в значения хэша помещать не количество звонков, а, например, анонимный массив или хэш с нужной информацией. Или, возможно, с самого начала делать хэш не по номерам телефонов, а по ID абонентов, если, например, сортировка по ID более важна. Готов и здесь помочь (понимаю, что окунуться сразу в структуры данных перла -- это можно и утонуть), но для этого Вы должны сказать, как должен выглядеть вывод предполагаемого скрипта (даже не просто сказать а сочинить его, например, для того куска лога, который приводили выше, точно в том виде, в котором скрипт его выдал бы). |
|||
|
||||
| Uзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.9.2009 Репутация: нет Всего: нет |
amg Очень благодарен за подробные обьяснения!
Стараюсь вразуметь что-нибудь в главе "Регулярных выражений"перл актив |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Т.е. посто напечатать подходящие строки лога, убрав из них лишнее и переставив отдельные куски, без какой-либо статистики и сортировки? Тогда совсем просто, ни хэши, ни многомерные структуры данных не нужны:
|
|||
|
||||
| Uзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.9.2009 Репутация: нет Всего: нет |
Ничего себе програмка!!!Щас буду осваивать со скрипом
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Тогда и скрипт то не нужен! Достаточно набрать в командной строке и исполнить команду
perl -ne "print if /^N.+A\d+\s*$/" LOG.txt
Задай $limit где-нибудь в начале и добавь пару строк перед printf (который в цикле): my ($h,$m,$s) = split /:/, $duration; next if $h*3600+$m*60+$s < $limit; |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
Uзверь,
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |