#!/usr/bin/perl -w


if (!$ARGV[0])
{
print "Syntaxe: ./at.pl heure:minute\n";
die "Pas de raison de continuer... \n\n";
}
    
    

print "Entrer les commandes (fin de saisi en entrant Quit)\n";
    while (defined($recu = <STDIN>) and $recu !~ /^\s*?Quit\s*?$/i)
    {
    push (@a_faire,$recu);
    }
print "Liste des commandes:\n";
foreach (@a_faire) { print  "\t$_\n"; }
    
($heure,$minute) = split /:/,$ARGV[0];
($c_sec,$c_min,$c_heure) = localtime(time);
print "Il est $c_heure:$c_min\nLes programmes seront executes a $heure:$minute, soit une attante de ";
if ($minute < $c_min) {   $minute += 60; $heure -=1; }
if ($heure < $c_heure) {   $heure += 24; }
$sleep =  (($heure-$c_heure)*60*60 + ($minute-$c_min)*60 +$c_sec-60);
print "$sleep secondes\n";

if ($pid = fork) { print "\nRuning background\n"; }
elsif(defined $pid)
{
select(undef,undef,undef,$sleep);
print "\nAT SCRIPT: ".scalar @a_faire." programme(s) a executer\n";
foreach (@a_faire) { print "[EXEC:] $_\n"; system($_); }
}
