Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как узнать какой завтра день в Windows?


Автор: stan777 14.3.2007, 13:21
Как узнать какой завтра день в Windows?
Может есть какой-нибудь модуль который выполнял бы date -jv +1d +%d но в Windows ?

Автор: arto 14.3.2007, 13:40
>perl -MPOSIX=strftime -le "print strftime """%c""",localtime time+24*60*60"
15.03.2007 12:38:33

Автор: stan777 14.3.2007, 14:44
Да спасибо, понял 
Код

print localtime(time()+86400)->[3]."\n";

Автор: tishaishii 17.3.2007, 20:10
Цитата
print localtime(time()+86400)->[3]."\n";

так нельзя.
А надо так:
Код
print +(localtime 60*60*24+time)[3], "\n";

Автор: stan777 18.3.2007, 23:49
Цитата(tishaishii @ 17.3.2007,  20:10)
Цитата
print localtime(time()+86400)->[3]."\n";

так нельзя.
А надо так:
Код
print +(localtime 60*60*24+time)[3], "\n";

Если нельзя, то объясни почему нельзя, так как перл мне лично говорит что можно smile. И даже в Юниксе на это не ругается smile
Не знаю как у тебя, а у меня это не работает 
Код
print +(localtime 60*60*24+time)[3], "\n";

Автор: amg 19.3.2007, 09:32
stan777, выражение tishaishii совершенно логично, и оно правильно работает. 
При интерпретации твоего выражения (со стрелкой) перл пытается использовать строку, возвращаемую функцией localtime, в качестве ссылки на массив. Это не выглядит правильным, и при использовании use strict перл отказывается работать. Возможно, такое поведение зависит от версии перл, у меня - так. Даже если твое выражение работает, лучше его не использовать, т.к. весьма не просто понять, почему оно работает (или не работает). Выражение же tishaishii прозрачно.
В твоем выражение, чтобы оно было правильным, нужно заставить localtime возвращать списочный контекст и оформить его в виде ссылки:
Код

print [localtime(time+86400)]->[3]."\n";

Автор: stan777 19.3.2007, 10:11
Цитата(amg @ 19.3.2007,  09:32)
stan777, выражение tishaishii совершенно логично, и оно правильно работает. 
При интерпретации твоего выражения (со стрелкой) перл пытается использовать строку, возвращаемую функцией localtime, в качестве ссылки на массив. Это не выглядит правильным, и при использовании use strict перл отказывается работать. Возможно, такое поведение зависит от версии перл, у меня - так. Даже если твое выражение работает, лучше его не использовать, т.к. весьма не просто понять, почему оно работает (или не работает). Выражение же tishaishii прозрачно.
В твоем выражение, чтобы оно было правильным, нужно заставить localtime возвращать списочный контекст и оформить его в виде ссылки:
Код

print [localtime(time+86400)]->[3]."\n";

Ах да, я же использую модуль Time отсюда и такая странная работа программы smile, при включении этого модуля то что писал tishaishii работать не будет, а при выключении модуля за работает smile. Прошу прощения что все напутал smile.
да действительно, [localtime(time+86400)] так правильней спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)