bnghtz

timer like at

May 16th, 2015
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.10 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my ($run, $timer);
  5. $timer = 0.5 * 60;
  6. $run = 'an other program';
  7.  
  8. sub d2($) { return ($_[0] < 10) ? '0'.$_[0] : $_[0]; }
  9.  
  10. sub getDate(;$) {
  11.     my $time = $_[0] || time;
  12.     my @date = localtime($time);
  13.     $date[5] += 1900;
  14.     $date[4] += 1;
  15.     map {$_ = '0'.$_ if ($_ < 10)} @date;
  16.  
  17.     return ($date[5],$date[4],$date[3],$date[2],$date[1],$date[0]);
  18. }
  19.  
  20. my ($timerDay,$timerHour,$timerMin);
  21. if (defined($ARGV[0]) && $ARGV[0] =~ /^(\d\d?)[:\.-]?(\d\d?)$/) {
  22.     ($timerHour,$timerMin) = (d2($1),d2($2));
  23. }
  24. elsif (defined($ARGV[0]) && $ARGV[0] =~ /^(\d\d?)[:,\.-]?(\d\d?)[:\.-]?(\d\d?)$/) {
  25.     ($timerDay, $timerHour,$timerMin) = (d2($1),d2($2),d2($3));
  26. }
  27. else {
  28.     $timerDay = (getDate(time + 86400))[2];
  29.     ($timerHour,$timerMin) = (0,15);
  30. }
  31.  
  32. while (1) {
  33.     my ($year, $month, $day, $hour, $min, $sec) = getDate();
  34.     if (
  35.         (!defined($timerDay) || $timerDay == $day) &&
  36.         ($min + 60 * $hour) >= ($timerMin + 60 * $timerHour)) {
  37.         print "run\n";
  38.         `$run`;
  39.         last;
  40.     }
  41.    
  42.     sleep($timer);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment