Perl подсчитывает записи журнала в секунду, используя хэш массивов

StackOverflow https://stackoverflow.com/questions/9376212

  •  28-10-2019
  •  | 
  •  

Вопрос

Обновлено:

После моего первоначального сообщения и ответов мне удалось сделать еще один взлом, и мои цели и результаты были изложены немного яснее:

Цель:

Я пытаюсь подсчитать количество совпадений в строке поиска файла журнала, чтобы выяснить, сколько вхождений сообщения генерируется следующими способами:

  • Всего за день.
  • Всего за час.
  • Максимальное значение за минуту, за час.
  • Наибольшее значение в секунду, в час.

Мой рабочий код:

родовое слово

Результаты

Мне пришлось отключить строгий режим (чего мне стыдно) из-за моих плохих методов разыменования хэша.

родовое слово

Попытка вывода:

родовое слово

Вопросы:

  1. Есть ли лучший способ написать код и включить строгий режим?
  2. Как мне составить список наивысшего вхождения хеш-значения в хеш-коде, пытаясь указать только самое большое число?

Спасибо за все предыдущие сообщения, без них я бы не продвинулся так далеко.

С уважением,

Энди

Это было полезно?

Решение

Его можно несколько упростить (я также внес некоторые стилистические изменения, чтобы улучшить читаемость):

родовое слово

Рабочая часть цикла, которая является центральной для вашего запроса, следующая:

родовое слово

Вот тот же код с добавленными комментариями, поясняющими, почему я внес стилистические изменения:

родовое слово

Другие советы

Вам следует рассмотреть возможность использования модуля для анализа временных меток, например DateTime :: Format :: Strptime .

родовое слово

Если бы вы сделали что-то вроде:

родовое слово

Вы можете сохранить все данные из меток времени в объектах DateTime и использовать их позже по мере необходимости.

Возникла проблема с регулярным выражением для получения даты. Поскольку дата содержит символ - вы не можете получить всю дату с помощью \ d + Вместо этого вы должны использовать \ S +, чтобы получить всю дату. Я пробую ваш код сейчас ... буду обновлять дополнительную информацию

<цитата>

Обновление 1

Я предполагаю, что вы хотите получить количество за день и за час. Поэтому немного изменили логику

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top