NAME
Schedule::At - OS independent interface to the Unix 'at' command
SYNOPSIS
require Schedule::At;
Schedule::At::add(TIME => $string, COMMAND =>$string [, TAG =>$string]);
Schedule::At::add(TIME => $string, FILE => $string [, TAG => $string])
Schedule::At::remove(JOBID => $string);
Schedule::At::remove(TAG => $string);
%jobs = Schedule::At::getJobs();
DESCRIPTION
This modules provides an OS 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 TIME and a command to execute. The TIME has a common format: YYYYMMDDHHmm. Where YYYY is the year (4 digits), MM the month (01-12), DD is the day (01-31), HH the hour (00-23) and mm the minutes.
The command is passed with the COMMAND or the FILE parameter. COMMAND can be used to pass the command as an string, and FILE to read the commands from a file.
The optional parameter TAG 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::remove
-
Remove an at job.
You identify the job to be deleted using the JOBID parameter (an opaque string returned by the getJobs subroutine). You can also specify a job or a set of jobs to delete with the TAG parameter, removing all the jobs that have the same tag (as specified with the add subroutine).
Returns 0 on success or a value != 0 if an error occurred.
- Schedule::At::getJobs
-
Returns a hash with all the current jobs or undef if an error occurred. For each job the key is a JOBID (an OS dependent string that shouldn't be interpreted), and the value is a hash reference.
This hash reference points to a hash with the keys:
- TIME
-
An OS dependent string specifying the time to execute the command
- TAG
-
The tag specified in the Schedule::At::add subroutine
EXAMPLES
use Schedule::At;
# 1
Schedule::At::add (TIME => '199801181530', COMMAND => 'ls',
TAG => 'ScheduleAt');
# 2
Schedule::At::add (TIME => '199801181630', COMMAND => 'ls',
TAG => 'ScheduleAt');
# 3
Schedule::At::add (TIME => '199801181730', COMMAND => 'ls');
# 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 (josear@ac.upc.es)