如何刪除我不感興趣的數組項目?如果我將他們留在—我的記憶會溢出不必要的項目。如何根據年齡刪除Perl哈希或數組項目?
我需要在Perl中實現一個任務。一個文件正在不斷地充滿包含的信息:
"IP - URL"
我需要不斷地讀取這個文件和衡量,如果有不止,覺得五,同IP - URL
雙,比方說,五週秒鐘的時間間隔。
如果我每五秒從上一個位置讀取文件並計算重複次數,那麼當五秒鐘內有八個相同的行對時,但在第一次讀取時,有四個相同行,而另外四個是第二個五秒鐘後讀取。因此我需要檢查最後五個重複行之間的間隔。
我可以:
$pairs[$ip_url_line] = ['time-stamp',....,'time-stamp-N']
然後得到最後五數組項爲這個哈希鍵和計算時移。如果超過5秒—做些什麼。
當然,我可以通過所有的哈希元素,並在循環中的所有陣列項目運行,並檢查它是否是舊的,然後5秒,但它太資源昂貴。
我的同事討論的想法後,我們已經找到更加有效的方式:1。 每次進入被添加到陣列 - 只保留最後10級陣列的項目。 2.刪除超過5秒的項目。 3.如果有超過10個項目 - 做一些動作 ++++你的想法 一分鐘循環通過所有哈希項目。如果最後一個數組項時間戳超過5秒 - 刪除散列元素。 解決! 謝謝! 有時候告訴某人你的想法和實施方式已經足夠了,並且你會對你的問題有一個答案)) – 2009-11-18 11:48:11
你可以告訴我在閱讀你的問題時, - 顯然我在腦海中寫下了「5分鐘」。 :) – hobbs 2009-11-18 12:11:35