Как удалить элементы массива, которые меня не интересуют? Если бы я оставил их - моя память была бы переполнена ненужными предметами.
Мне нужно реализовать в Perl одну задачу. Один файл постоянно заполняется сообщениями, содержащими:
"IP - URL"
Мне нужно постоянно читать этот файл и измерять, было ли, скажем, пять, одинаковых IP - URL
пар в, скажем, пятисекундном интервале.
Если я читаю файл с последней позиции каждые пять секунд и подсчитываю дубликаты, я могу столкнуться с ситуацией, когда в течение пяти секунд было восемь одинаковых пар линий, но во время первого чтения их было четыре, а еще четыре были во время второго чтения через пять секунд. Таким образом, мне нужно проверить интервал между последними пятью повторными строками.
Что я могу:
$pairs[$ip_url_line] = ['time-stamp',....,'time-stamp-N']
Затем получите последние пять элементов массива для этого хеш-ключа и вычислите сдвиг времени. Если оно превышает пять секунд - сделайте что-нибудь.
Конечно, я могу запустить все элементы хеша и все элементы массива в цикле и проверить, не старше ли он 5 секунд, но это слишком дорого.