Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Yuriy Al. Shirokov ([info]yushi)
@ 2005-06-24 12:18:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Perl'овое: как красиво разобрать строку с датой?
Довелось мне тут писать незамысловатую программку на Perl. В общем и целом, написал и даже заставил работать, но один маленький фрагмент её кода оскорбляет моё эстетическое чувство.

Задачка, собственно, элементарная:

Есть дата в формате: ГГГГ-ММ-ДД часы:минуты:секунды, лежащая, положим, в переменной$row_date . Хочется раскидать её по переменным $sec, $min, $hour, $day, $month, $year.

Я сейчас делаю это так:


($entry_date, $entry_time) = split(/ /,$row_date);
($year, $month, $day) = split(/-/,$entry_date);
($hour, $min, $sec) = split(/:/,$entry_time);


Казалось бы, логично. Но, согласитесь, громоздко и некрасиво. Даже не будучи ни программистом, ни — тем более! — специалистом по Perl'у, я догадываюсь, что то же самое можно сделать гораздо проще.


Соответственно, вопрос уважаемым френдам: как это можно сделать красиво, т.е. в идеале — без дополнительных переменных и в одной строке?


(Читать комментарии) - (Добавить комментарий)


[info]kstoor@lj
2005-06-24 11:05 (ссылка)
перловка маздай, пехепе рулит ;) ;-Р

list ($year, $month, $day, hour, $min, $sec) = split('[-: ]', $row_date);

(Ответить) (Ветвь дискуссии)


[info]kstoor@lj
2005-06-24 11:19 (ссылка)
слушай, а на перле то же самое не будет работать случайно, а? сплит регекспом делать?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]yushi@lj
2005-06-24 12:34 (ссылка)
Не знаю, можно попробовать. Или спросить у присутствующих здесь специалистов.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]toshische@lj
2005-06-24 16:15 (ссылка)
Разумеется будет
my ($year, $month, $day, hour, $min, $sec) = split /\D/, $row_date;

(Ответить) (Уровень выше)


[info]yushi@lj
2005-06-24 12:33 (ссылка)
перловка маздай, пехепе рулит

Хм. То, что я делаю, никак не касается HTML ни в каком виде. А применять php для чего-то помимо WWW — это мазохизм, при всём уважении к. Типа написания веб-сервера на Бэйсике.

Я не считаю Perl идеальным языком программирования. Если бы программирование было моей основной деятельностью и при этом я был бы свободен в выборе инструмента, я использовал бы какой-нибудь функциональный язык вроде Scheme. Однако php по сравнению с Perl, всё-таки, просто игрушка.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kstoor@lj
2005-06-24 14:27 (ссылка)
Юра, не волнуйся, я пошутил ;) Наверно, нормальный язык, раз им люди пользуются. У меня на его синтаксис идиосинкразия -- ну так я не один такой. Пхп пользую только для веба, ни разу ни с какими ограничениями не сталкивался. Имхо, насчет игрушки ты, мягко говоря, преувеличиваешь ;)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]toshische@lj
2005-06-24 16:18 (ссылка)
в php нет аналога use strict; И больших проектах это часто выходит боком. Даже тесты не очень помогают (я делал большие (десятки тысячь строк) проекты и на том и на другом).

(Ответить) (Уровень выше) (Ветвь дискуссии)

Классный юзерпик ;)
[info]kstoor@lj
2005-06-24 16:33 (ссылка)
У меня таких больших не было, только разные движки и подпорки для сайтов. Тысячи на 2-3 строк максимум.

(Ответить) (Уровень выше)


[info]kstoor@lj
2005-06-24 16:39 (ссылка)
Хотя use strict, конечно, и в маленьких скриптах не помешало бы. Хотя мне, например, помогает привычка не юзать глобальные переменные.

(Ответить) (Уровень выше)

Для WWW
[info]comrade_voland@lj
2005-06-24 15:40 (ссылка)
однозначно рулит PHP! Присоединяюсь!

(Ответить) (Уровень выше)


(Читать комментарии) -