Функция сна не работает внутри цикла с использованием Perl Script - PullRequest
0 голосов
/ 14 декабря 2018

Мой код:

#!/usr/local/bin/perl 
use Time::Piece;
use Time::HiRes;
use strict;
use warnings 'all';
my $i = 1;
my $starttime = localtime->strftime('%Y%m%d%H%M');
open my  $file, '>', 'order.properties' or die $!;
for ($i = 1; $i <= 10; $i++){   
  print $file "Start_time_$i = $starttime\n";
  sleep (120);
}
close $file;

В приведенном выше коде я создаю файл order.properties и записываю переменную с именем Starttime, назначаю дату и время в формате YYYYMMDDHH24MM и выполняю итерации.переменная в течение 10 раз с временем ожидания 2 минуты, но сон не работает, и после добавления функции сна в сценарий, он просто создает файл, ничего не записывая в него.

Для каждой итерации цикла мне нужно2 минуты сна, как:

 Start_time_1 = 201812141350
 Start_time_2 = 201812141352

Вывод должен быть таким, как указано выше.

1 Ответ

0 голосов
/ 14 декабря 2018

Вы устанавливаете $starttime вне цикла и никогда не меняете его.Поэтому оно всегда имеет одинаковое значение.Если вы хотите, чтобы оно изменилось в цикле, то вам нужно изменить его в цикле.

for ($i = 1; $i <= 10; $i++){  
  my $starttime = localtime->strftime('%Y%m%d%H%M'); 
  print $file "Start_time_$i = $starttime\n";
  sleep (120);
}

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

for ($i = 1; $i <= 10; $i++){  
  print $file "Start_time_$i = ", localtime->strftime('%Y%m%d%H%M'), "\n";
  sleep (120);
}

И, пожалуйста, сделайте жизнь вашего программиста по обслуживанию проще, используя там петлю foreach.

foreach my $i (1 .. 10) {  
  print $file "Start_time_$i = ", localtime->strftime('%Y%m%d%H%M'), "\n";
  sleep (120);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...