| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Как сделать сортировку по времени???? |
| Автор: treee 12.1.2011, 09:05 | ||
| Лог вида: 2011 Jan 11 16:29:56 user google.ru 10 10.10.10.10 2011 Jan 11 08:45:47 user ya.ru 10 10.10.10.10 2011 Jan 11 09:02:53 user help.ru 20 10.10.10.10 2011 Jan 11 15:23:40 user ya.ru 10 10.10.10.10 2011 Jan 11 12:11:57 user ya.ru 10 10.10.10.10 Делаю:
У меня передаётся: 16:29:56 user google.ru 10 08:45:47 user ya.ru 10 09:02:53 user help.ru 20 15:23:40 user ya.ru 10 12:11:57 user ya.ru 10 Как сделать сортировку по времени ($time), чтобы передавалось: 08:45:47 user ya.ru 10 09:02:53 user help.ru 20 12:11:57 user ya.ru 10 15:23:40 user ya.ru 10 16:29:56 user google.ru 10 , что то у меня не получается, пробывал вставлять: @Sorted = sort { $a cmp $b } @time; print "@Sorted"; Что то не получилось, подскажите в какую сторону копать? |
| Автор: Jimy 12.1.2011, 10:00 | ||
Куда вставляли? Покажите окончательный вариант кода, который не работает. В приведенном коде нет никакой сортировки. |
| Автор: treee 12.1.2011, 10:13 |
| Сюда: if ( $userrr eq $user ) { @time = $time; @Sorted = sort { $a cmp $b } @time; print "@Sorted"; |
| Автор: Jimy 12.1.2011, 10:20 | ||
а в вашем коде @time перезаписывается на каждой итерации внутри while |
| Автор: alezzz 12.1.2011, 10:20 |
| Переведите в общее количество секунд и отсортируйте. Пример на http://docstore.mik.ua/orelly/perl/cookbook/ch03_03.htm. Только разделите время на часы, минуты, секунды. Функция timelocal понимает месяц в виде строки 'jan', 'feb' и т.д. и год в формате 2011. |
| Автор: vadiml 12.1.2011, 10:56 |
| Используйте для сортировки хеш, т.е. сохраните данные вместо массива в хеш где ключём будет время, а потом print %time{$_} foreach sort keys %time |
| Автор: treee 12.1.2011, 12:10 |
| Jimy, alezzz, vadiml, Спасибо. Jimy, Как Вы написали работает не до конца, время он переносит а остальные данные такие как $userrr, $site, size - нет. |
| Автор: treee 18.1.2011, 09:41 |
| Благодарю всех за помощь. |