| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > написать в одну строку |
| Автор: gcc 1.4.2011, 00:09 | ||||||
есть код:
мне нужно вывести только:
2011-03-31 пробую написать, но не получатеся подставить $year+1900,$mon+1 в:
как написать в одну строку? |
| Автор: arto 1.4.2011, 06:52 |
| sub { $_[5]+1900,$_[4]+1,$_[3] }->(localtime) |
| Автор: ming 1.4.2011, 12:22 | ||
|
| Автор: arto 1.4.2011, 13:00 |
| # perlbloat POSIX POSIX added 652k #perl -MPOSIX=strftime -MBenchmark=timethese -e 'timethese ($ARGV[0], { A => sub { sprintf "%s-%s-%s", sub { $_[5]+1900,$_[4]+1,$_[3] }->(localtime) }, B => sub { strftime("%Y-%m-%d", localtime); } } )' 10000000 Benchmark: timing 10000000 iterations of A, B... A: 76 wallclock secs (52.32 usr + 24.36 sys = 76.68 CPU) @ 130412.10/s (n=10000000) B: 112 wallclock secs (55.45 usr + 56.47 sys = 111.92 CPU) @ 89349.54/s (n=10000000) # |
| Автор: ming 1.4.2011, 14:26 |
интересно зачем же люди тогда придумали strftime? ведь он же МЕДЛЕННЫЙ! |
| Автор: gcc 1.4.2011, 14:30 |
| arto, спасибо, работает! ming, спасибо, мне нужно было узнать именно про конструкции perl, то как написать в данном случае... |
| Автор: arto 1.4.2011, 14:49 |
| у него форматная строка хорошая: # LC_ALL=ru_RU.utf8 perl -MPOSIX=strftime -le 'print strftime "%a: %A",localtime' Птн: Пятница # |