This particular example just touches a file.
I had to make sure the webuser had permissions to do this before it would work.
#!/usr/bin/perl -w
use strict;
# debug mode
BEGIN {
# use CGI::Carp qw(carpout fatalsToBrowser);
# &carpout (\*STDOUT);
}
use CGI;
my $q = new CGI;
print $q->header();
print "<center>\n";
&print_at_form;
&create_at_job if $q->param('Submit');
### Subroutines ###
sub print_at_form {
print $q->startform();
print "Hour";
print $q->popup_menu(-name=>'hour', -values=>[1..12]);
print "Minutes";
print $q->popup_menu(-name=>'minute', -values=>[qw/00 05 10 15 20
+25 30 35 40 45 50 55/]);
print "Day";
print $q->popup_menu(-name=>'day', -values=>[qw/Today Mon Tue Wed
+Thu Fri Sat Sun/]);
print $q->radio_group(-name=>'meridiem', -values=>[qw/am pm/]);
print $q->submit(-name=>'Submit');
print $q->endform();
}
sub create_at_job {
my $string = 'at ' . $q->param('hour') . ':' . $q->param('minute')
+ . ' ' . $q->param('meridiem') . ' ' . $q->param('day');
my $pid = open(ATJOB, "| $string") or die "Couldn't fork: $!\n";
print ATJOB "touch /foo/bar/some_file\n";
close(ATJOB);
print "Your job will run $string";
}