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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl localtime 
:(
    Опции темы
dnbattack
  Дата 3.7.2011, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



доброго времени суток. 
Имеется скрипт написанный коллегой для создания бэкапов. 
Недавно я заметил что папки и файлы бэкапов создаются не как раньше:
год_мес_день/имяфайла.год_мес_день_время
а так 
/ЧЧ:ММ:СС_Jul_/имяфайла.ЧЧ:ММ:СС_Мес__День
... что не очень удобно ... 
Изменений в скрипте никаких не производилось, если только обновлялась система (ubuntu 10.10)

Привожу кусок кода который явно отвечает за дату и время ...


#!/usr/bin/perl -w

< тут то что делает скрипт >

sub gettime {
        #($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
        my ($mday, $month, $day, $time, $year) = split(/[\s' ']/, localtime(time));
        if ( !defined($_[0]) ) {
                return "$year\_$month\_$day";
        } else {
                return "$year\_$month\_$day\_$time";
        }
}

...

В Perl я новичок (если быть точнее, даже нуб) и пока мало что понимаю - буду рад любой помощи ... спасибо!


Это сообщение отредактировал(а) dnbattack - 3.7.2011, 17:29
PM MAIL   Вверх
EcSYZ
Дата 3.7.2011, 17:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
$year += 1900;
$mon++;

return "$year\_$month\_$day";#ну вообщем тут уже нужный формат просто сделать


PS: хотя может стоить заглянуть в доки по localtime в Убунте, вдруг там чтото своё решили придумать  smile 

Это сообщение отредактировал(а) EcSYZ - 3.7.2011, 17:55
PM MAIL WWW   Вверх
dnbattack
Дата 3.7.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



привел к такому виду:


Код

sub gettime {
        #($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
        #my ($mday, $month, $day, $time, $year) = split(/[\s' ']/, localtime(time));
        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
        $year += 1900;
        $mon++;
        if ( !defined($_[0]) ) {
                return "$year\_$month\_$day";
        } else {
                return "$year\_$month\_$day\_$time";
        }
}



Теперь скрипт отказывается работать вовсе ... 

/backup$ ./backup.pl 
Global symbol "$month" requires explicit package name at ./backup.pl line 196.
Global symbol "$day" requires explicit package name at ./backup.pl line 196.
Global symbol "$month" requires explicit package name at ./backup.pl line 198.
Global symbol "$day" requires explicit package name at ./backup.pl line 198.
Global symbol "$time" requires explicit package name at ./backup.pl line 198.
Execution of ./backup.pl aborted due to compilation errors.

PM MAIL   Вверх
EcSYZ
Дата 3.7.2011, 18:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

sub gettime {
    my ($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst)=localtime();
    $year += 1900;
    $month++;
    my $time="$hour:$min:$sec";
    if ( !defined($_[0]) ){
        return "$year\_$month\_$day";
    } else {
        return "$year\_$month\_$day\_$time";
    }
}

Выдаёт как и надо:
2011_7_3
2011_7_3_19:14:21
PM MAIL WWW   Вверх
dnbattack
Дата 3.7.2011, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да, действительно ... криво набрал код ... 
Спасибо!  smile  smile 

а если не секрет из-за чего мог появится такой косяк, учитывая что ранее все работало ?

PM MAIL   Вверх
Swedman
Дата 4.7.2011, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

print scalar localtime();


Вывод: Mon Jul  4 18:32:36 2011

Подскажите, формат вывода где можно задать?


------------------------------------
производство железа

Это сообщение отредактировал(а) Swedman - 5.1.2020, 17:32
PM MAIL WWW   Вверх
arto
Дата 4.7.2011, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1490
Регистрация: 31.10.2004

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



perldoc POSIX на предмет strftime
PM MAIL ICQ   Вверх
OutlawZ
Дата 5.7.2011, 04:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#perl

use encoding 'CP1251', STDOUT => 'CP866';

$thisday = qw(Воскресенье
                        Понедельник
              Вторник
              Среда
              Четверг
              Пятница
              Суббота)[(localtime)[6]];
              
$year    = (localtime)[5] + 1900;
print "Сегодня $thisday, $year года!\n";

05.07.2011 $ data.pl
Сегодня Вторник, 2011 года!


Опоздал, но все же выложу smile, если вы работаете в unix то удалите "use encoding 'CP1251', STDOUT => 'CP866';"

Это сообщение отредактировал(а) OutlawZ - 5.7.2011, 04:24


--------------------
user posted image
user posted image
PM MAIL   Вверх
dnbattack
Дата 11.7.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Продолжу обсуждение тут, 
Теперь возникла проблема с запуском скрипта с помощью cron

набрал 
crontab -e 

вписал туда 
30 5    * * *   backup-system /usr/bin/perl /home/backup-system/backup/backup.pl
(запуск каждый день в 5 часов 30 мин)

но как я заметил задание не выполняется, причем логи просто пустые ... 
даже не знаю куда копать ... надеюсь на любую помощь

Система ubuntu 10.10



PM MAIL   Вверх
ssdm
Дата 13.7.2011, 13:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(dnbattack @ 11.7.2011,  17:38)
Продолжу обсуждение тут, 
Теперь возникла проблема с запуском скрипта с помощью cron

набрал 
crontab -e 

вписал туда 
30 5    * * *   backup-system /usr/bin/perl /home/backup-system/backup/backup.pl
(запуск каждый день в 5 часов 30 мин)

но как я заметил задание не выполняется, причем логи просто пустые ... 
даже не знаю куда копать ... надеюсь на любую помощь

Система ubuntu 10.10

Впишите так 
Код

30 5    * * *   backup-system /usr/bin/perl /home/backup-system/backup/backup.pl > /tmp/backup.log 2>&1


таким образом вы направите ошибки запуска скрипта в файл /tmp/backup.log 

Потом посмотрите что после неудачного в этот файл запишется.

Это сообщение отредактировал(а) ssdm - 13.7.2011, 17:30
PM MAIL   Вверх
dnbattack
  Дата 13.7.2011, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Выдало

Код
 /bin/sh: 30: not found 


полез в 
/etc/crontab 

Исправил 
Код

SHELL=/bin/sh


на 
Код

SHELL=/bin/bash


перезапустил cron 

все равно говорит 
Код

/bin/sh: 30: not found


Ладно, черт с ним ... прописываю тоже самое по 
crontab -e

в логе 
Код

/bin/sh: 30: not found


 smile 
PM MAIL   Вверх
arto
Дата 14.7.2011, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1490
Регистрация: 31.10.2004

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



если crontab -e, то зачем backup-system ?
PM MAIL ICQ   Вверх
dnbattack
Дата 18.7.2011, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(arto @ 14.7.2011,  06:49)
если crontab -e, то зачем backup-system ?

Пробовал без него - все тоже самое ....

 smile  

Это сообщение отредактировал(а) dnbattack - 18.7.2011, 01:29
PM MAIL   Вверх
arto
Дата 18.7.2011, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1490
Регистрация: 31.10.2004

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



ну значит у вас что то очень странное
PM MAIL ICQ   Вверх
ssdm
Дата 18.7.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(dnbattack @ 13.7.2011,  23:34)
Выдало

Код
 /bin/sh: 30: not found 


полез в 
/etc/crontab 

Исправил 
Код

SHELL=/bin/sh


на 
Код

SHELL=/bin/bash


перезапустил cron 

все равно говорит 
Код

/bin/sh: 30: not found


Ладно, черт с ним ... прописываю тоже самое по 
crontab -e

в логе 
Код

/bin/sh: 30: not found


 smile

По моему вам к админам обращаться надо.
У вас что то с cron ом. Не в perl'е проблема.
PM MAIL   Вверх
Google
  Дата 27.1.2020, 19:43 (ссылка)  





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


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

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


 




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


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

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