Суть - есть поток строчек, из которых надо вылавливать пары с одинаковым ID и парсить их самым извращённым образом. Фишка в том, что такие пары не обязаны идти подряд (это было бы слишком просто), они могут перемешиваться с другими, хотя могут и идти подряд.
Решил красиво объехать эту неприятность хэшами. В имени ключа сохраняем ID, а в значении - саму строку для будущей обработки. Встречаем такой же ключ - парсим и забываем. Выглядит это так:
ar = Hash.new("")
while true
a=STDIN.gets
a =~ /( блаблабла)/
if ar.key? $2 then # о! да у нас есть строчка с таким ID! парсим
# обработка параметров из "a"
ar[$2] =~ /( блаблабла)/
# обработка параметров из сохранённой строчки
ar.delete($2) #забыли этот ключ
else #нету у нас пока такого ID, надо запомнить его
ar[$2]=a
end
end
Штука в том, что конструкция выборочно парсит где-то половину строк. Логики в том, что именно она скипает, я не вижу. Догадываюсь, что я что-то не понимаю в логике работы хэша. Подскажите, ЧЯДНТ?