2014-11-28 4 views
-2

Как написать цикл for в perl, который должен выполнять блок операторов каждую неделю. Например: Время начала: 00:00:00 Понедельник, затем снова цикл должен начинаться в 00:00:00 понедельника на следующей неделе.Как я могу повторить цикл for для каждых семи дней

Спасибо за любой ввод.

С уважением, Chandu

+4

Не используйте perl, используйте 'cron'. – Sobrique

ответ

0

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

use strict; 
use warnings; 

use Time::HiRes qw(gettimeofday tv_interval usleep); 
# 1 week equal 168 hr 
for(;;) { 
    # put your codes here 
    # ... 

    for my $h (0..167) { 
     for my $m (0..59) { 
      for my $s (0..59) { 
       for my $ms (0..999) { 
        print "$h:$m:$s:$ms\n"; 
        usleep(1000); 
        $ms += 0.001; 
       } 
      } 
     } 
    } 
} 
+0

Это, по сути, таймер, тогда вы можете видеть, в какой день вы находитесь или сколько осталось времени ... –

2

cron (или любой другой планировщик задач операционная система использует) является правильным инструментом для этого, а не Perl.

Однако в простейшем случае это можно сделать в Perl с sleep 604800;, который будет ждать 604 800 секунд (т. Е. 7 дней), прежде чем перейти к следующему утверждению. Нет циклов.

+0

На самом деле я пишу perl-based CGI, поэтому еженедельно должны выполняться операторы внутри цикла for. .. –

+1

Вы действительно хотите, чтобы сценарий CGI запускался в течение столь длительного времени? Звучит так, будто вы хотите написать демона. Но для периодических задач планировщик, вероятно, является лучшим решением. – dgw

+1

Скорее всего, вы, вероятно, не можете написать CGI, который длится так долго, потому что веб-сервер решит, что запрос рассчитан на время и убьет скрипт гораздо меньше, чем на неделю. (По умолчанию Apache составляет 5 минут.) Если операции должны запускаться из CGI, лучше всего запланировать задачу в cron на другой машине (например, на вашей рабочей станции), которая каждую неделю вызывает URL CGI, а CGI запуск команд, а затем выход, как только это будет сделано. –

Смежные вопросы