Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать сортировку по времени???? Сортировка по времени 
:(
    Опции темы
treee
Дата 12.1.2011, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



Лог вида:

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


Делаю:

Код


Open FF,"<$days/1111" || MyDie("can't open $days/1111");

  while (<FF>) {

  ($years,$month,$day,$time,$userrr,$site,$size,$ip)=split;


if ( $userrr eq $user )

{

  $tmp=$hTPL{site};
  $tmp=~s/##TIME##/$time/;
  $tmp=~s/##SITE##/$site/;
  $tmp=~s/##USER##/$userrr/;
  $tmp=~s/##SIZE##/$size/g;
  $tpl{site} .= $tmp;
}





У меня передаётся:
 
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";


Что то не получилось, подскажите в какую сторону копать?

Это сообщение отредактировал(а) treee - 12.1.2011, 09:10
PM MAIL   Вверх
Jimy
Дата 12.1.2011, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 4.7.2010

Репутация: нет
Всего: 3



Цитата(treee @ 12.1.2011,  09:05)
, что то у меня не получается, пробывал вставлять:
@Sorted = sort { $a cmp $b } @time;
print "@Sorted";

Куда вставляли? Покажите окончательный вариант кода, который не работает. В приведенном коде нет никакой сортировки.

Это сообщение отредактировал(а) Jimy - 12.1.2011, 10:02
PM   Вверх
treee
Дата 12.1.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



Сюда:


if ( $userrr eq $user )

{
@time = $time;

@Sorted = sort { $a cmp $b } @time;

print "@Sorted";
PM MAIL   Вверх
Jimy
Дата 12.1.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 4.7.2010

Репутация: нет
Всего: 3



 smile 

Код

my @time;
while (<FF>) {
...
if ( $userrr eq $user ) {
push @time, $time;
...
}
}
@Sorted = sort { $a cmp $b } @time;
print "@Sorted";


а в вашем коде @time перезаписывается на каждой итерации внутри while
PM   Вверх
alezzz
Дата 12.1.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



Переведите в общее количество секунд и отсортируйте. Пример на CookBook. Только разделите время на часы, минуты, секунды. Функция timelocal понимает месяц в виде строки 'jan', 'feb' и т.д. и год в формате 2011.
PM MAIL   Вверх
vadiml
Дата 12.1.2011, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: нет
Всего: 7



Используйте для сортировки хеш, т.е. сохраните данные вместо массива в хеш где ключём будет время, а потом 
print %time{$_} foreach sort keys %time
PM MAIL Jabber   Вверх
treee
Дата 12.1.2011, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



Jimy
alezzz
vadiml

Спасибо.



Jimy
Как Вы написали работает не до конца, время он переносит а остальные данные такие как $userrr, $site, size - нет. 
PM MAIL   Вверх
treee
Дата 18.1.2011, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.12.2010

Репутация: нет
Всего: нет



Благодарю всех за помощь.

Это сообщение отредактировал(а) treee - 20.1.2011, 09:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.