使用Perl脚本,睡眠功能在for循环内不起作用

时间:2018-12-14 08:34:38

标签: perl

我的代码是:

#!/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分钟,但是睡眠不起作用,并且在脚本中添加了睡眠功能后,它只是在创建一个文件,没有向其中写入任何内容。

对于for循环的每次迭代,我需要2分钟的睡眠时间,例如:

 Start_time_1 = 201812141350
 Start_time_2 = 201812141352

输出应与上面类似。

1 个答案:

答案 0 :(得分:1)

您在循环之外设置了$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);
}