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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка дат 
:(
    Опции темы
Vinnety
  Дата 21.5.2004, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



baaa.gif Подскажите!
Например есть файл в котором находяться разные даты:
12.07.2001
23.08.1998
11.12.1997

и т.д.

А мне надо их отсортировать. Как это сделать ?

PM MAIL   Вверх
korob2001
Дата 21.5.2004, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Вообще-то для этой цели используют модули. Я просто изобрёл лесик. Правда я не тестировал его, потому не могу сказать насколько он быстрый.
Всё же, думаю такой вариант подойдёт, но только в том случае, если все даты будут в таком формате, как ты написал. Ещё одно замечание, файл не должен быть слишком большим, например 100-200MB.

У нас есть файл date.txt, в нём хранятся даты.
Так он выглядит:
Код

15.12.2004
10.08.2001
20.04.1977
02.07.1999
10.08.1523
29.11.2002
31.01.1875
18.09.2004
07.09.2003

Такой код отсортировывает даты и выводит их на экран:
Код

#!/usr/bin/perl -w
use strict;
use warnings;
my $path = 'date.txt';
open( F, "< $path" ) or die $!;
chomp( my @arr = <F> );
close( F ) or die $!;
  @arr = map { $_ = join('.', reverse split(/\./) ) } @arr;
foreach ( sort { $a cmp $b } @arr ) {
  print join('.', reverse split(/\./) ),"\n";
}

Но лучше хранить даты в секундах с начала 1970г.
Удачи.

Это сообщение отредактировал(а) korob2001 - 22.5.2004, 13:54


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Secandr
Дата 23.5.2004, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



проще сравнивать в секундах с начала эпохт, разве в перле нет чего-то наподобии mktime ?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
ElectricalStorm
Дата 24.5.2004, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



use Date::Calc


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


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

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


 




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


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

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