SYNOPSIS

 require Schedule::At;

 Schedule::At::add(TIME => $string, COMMAND => $string [, TAG =>$string]);
 Schedule::At::add(TIME => $string, COMMAND => \@array [, TAG =>$string]);
 Schedule::At::add(TIME => $string, FILE => $string)

 %jobs = Schedule::At::getJobs();
 %jobs = Schedule::At::getJobs(JOBID => $string);
 %jobs = Schedule::At::getJobs(TAG => $string);

 Schedule::At::readJobs(JOBID => $string);
 Schedule::At::readJobs(TAG => $string);

 Schedule::At::remove(JOBID => $string);
 Schedule::At::remove(TAG => $string);

DESCRIPTION

This modules provides an \s-1OS\s0 independent interface to 'at', the Unix command that allows you to execute commands at a specified time.

Schedule::At::add

Adds a new job to the at queue. You have to specify a \s-1TIME\s0 and a command to execute. The \s-1TIME\s0 has a common format: YYYYMMDDHHmm where \s-1YYYY\s0 is the year (4 digits), \s-1MM\s0 the month (01-12), \s-1DD\s0 is the day (01-31), \s-1HH\s0 the hour (00-23) and mm the minutes. The command is passed with the \s-1COMMAND\s0 or the \s-1FILE\s0 parameter. \s-1COMMAND\s0 can be used to pass the command as an string, or an array of commands, and \s-1FILE\s0 to read the commands from a file. The optional parameter \s-1TAG\s0 serves as an application specific way to identify a job or a set of jobs. Returns 0 on success or a value != 0 if an error occurred.

Schedule::At::readJobs

Read the job content identified by the \s-1JOBID\s0 or \s-1TAG\s0 parameters. Returns a hash of \s-1JOBID\s0 => $string where $string is the the job content. As the operating systems usually add a few environment settings, the content is longer than the command provided when adding the job.

Schedule::At::remove

Remove an at job. You identify the job to be deleted using the \s-1JOBID\s0 parameter (an opaque string returned by the getJobs subroutine). You can also specify a job or a set of jobs to delete with the \s-1TAG\s0 parameter, removing all the jobs that have the same tag (as specified with the add subroutine). Used with \s-1JOBID\s0, returns 0 on success or a value != 0 if an error occurred. Used with \s-1TAG\s0, returns a hash reference where the keys are the \s-1JOBID\s0 of the jobs found and the values indicate the success of the remove operation.

Schedule::At::getJobs

Called with no params returns a hash with all the current jobs or dies if an error has occurred. It's possible to specify the \s-1TAG\s0 or \s-1JOBID\s0 parameters so only matching jobs are returned. For each job the key is a \s-1JOBID\s0 (an \s-1OS\s0 dependent string that shouldn't be interpreted), and the value is a hash reference. This hash reference points to a hash with the keys:

\s-1TIME\s0

An \s-1OS\s0 dependent string specifying the time to execute the command

\s-1TAG\s0

The tag specified in the Schedule::At::add subroutine

Configuration Variables

  • $Schedule::At::SHELL This variable can be used to specify shell for execution of the scheduled command. Can be useful for example when scheduling from \s-1CGI\s0 script and the account of the user under which httpd runs is locked by using '/bin/false' or similar as a shell.

EXAMPLES

use Schedule::At;

# 1 Schedule::At::add (TIME => '199801181530', COMMAND => 'ls', TAG => 'ScheduleAt'); # 2 @cmdlist = ("ls", "echo hello world");

Schedule::At::add (TIME => '199801181630', COMMAND => \@cmdlist, TAG => 'ScheduleAt'); # 3 Schedule::At::add (TIME => '199801181730', COMMAND => 'df');

# This will remove #1 and #2 but no #3 Schedule::At::remove (TAG => 'ScheduleAt');

my %atJobs = Schedule::At::getJobs(); foreach my $job (values %atJobs) { print "\t", $job->{JOBID}, "\t", $job->{TIME}, ' ', ($job->{TAG} || ''), "\n"; }

AUTHOR

Jose A. Rodriguez (jose \s-1AT\s0 rodriguez.jp)