Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Algorithm::Cron(3)    User Contributed Perl Documentation   Algorithm::Cron(3)

       "Algorithm::Cron" - abstract implementation of the cron(8) scheduling

	use Algorithm::Cron;

	my $cron = Algorithm::Cron->new(
	   base	=> 'local',
	   crontab => "*/10 9-17 * * *",

	my $time = time;
	while(1) {
	   $time = $cron->next_time( $time );

	   sleep( time - $time );

	   print "Do something\n";

       Objects in this class implement a time scheduling algorithm such	as
       used by cron(8).	Objects	are stateless once constructed,	and represent
       a single	schedule as defined by a crontab(5) entry. The object
       implements a method "next_time" which returns an	epoch timestamp	value
       to indicate the next time included in the crontab schedule.

       The schedule is provided	as a set of acceptable values for each field
       of the broken-down time (as returned by "localtime" or "gmtime"),
       either in a single string called	"crontab" or by	a set of named
       strings,	each taking the	name of	a crontab(5) field.

	my $cron = Algorithm::Cron->new(
	   base	=> 'local',
	   crontab => '0 9 * * mon-fri',

	my $cron = Algorithm::Cron->new(
	   base	=> 'local',
	   min	=> 0,
	   hour	=> 9,
	   wday	=> "mon-fri",

       A "crontab" field containing a single asterisk ("*"), or	a missing
       named field, indicates that any value here is included in the scheduled
       times. To restrict the schedule,	a value	or set of values can be
       provided. This should consist of	one or more comma-separated numbers or
       ranges, where a range is	given as the start and end points, both

	hour =>	"3-6"
	hour =>	"3,4,5,6"

       Ranges can also be prefixed by a	value to give the increment for	values
       in that range.

	min => "*/10"
	min => "0,10,20,30,40,50"

       The "mon" and "wday" fields also	allow symbolic month or	weekday	names
       in place	of numeric values. These names are always in the C locale,
       regardless of the system's locale settings.

	mon => "mar-sep"

	wday =>	"mon,wed,fri"

       Specifying "sun"	as the end of a	"wday" range, or giving	the numeric
       value of	7 is also supported.

	wday =>	"fri-sun"
	wday =>	"5-7"
	# Both equivalent to: wday => "0,5,6"

       As per cron(8) behaviour, this algorithm	looks for a match of the
       "min", "hour" and "mon" fields, and at least one	of the "mday" or
       "mday" fields.  If both "mday" and "wday" are specified,	a match	of
       either will be sufficient.

       As an extension,	seconds	may be provided	either by passing six space-
       separated fields	in the "crontab" string, or as an additional "sec"
       field. If not provided it will default to 0. If six fields are
       provided, the first gives the seconds.

   Time	Base
       "Algorithm::Cron" supports using	either UTC or the local	timezone when
       comparing against the given schedule.

   $cron = Algorithm::Cron->new( %args )
       Constructs a new	"Algorithm::Cron" object representing the given
       schedule	relative to the	given time base. Takes the following named

       base => STRING
	       Gives the time base used	for scheduling.	Either "utc" or

       crontab => STRING
	       Gives the crontab schedule in 5 or 6 space-separated fields.

       sec => STRING, min => STRING, ... mon =>	STRING
	       Optional. Gives the schedule in a set of	individual fields, if
	       the "crontab" field is not specified.

   @seconds = $cron->sec
   @minutes = $cron->min
   @hours = $cron->hour
   @mdays = $cron->mday
   @months = $cron->mon
   @wdays = $cron->wday
       Accessors that return a list of the accepted values for each scheduling
       field.  These are returned in a plain list of numbers, regardless of
       the form	they were specified to the constructor.

       Also note that the list of valid	months will be 0-based (in the range 0
       to 11) rather than 1-based, to match the	values used by "localtime",
       "gmtime", "mktime" and "timegm".

   $time = $cron->next_time( $start_time )
       Returns the next	scheduled time,	as an epoch timestamp, after the given
       timestamp. This is a stateless operation; it does not change any	state
       stored by the $cron object.

       Paul Evans <>

perl v5.32.1			  2015-05-29		    Algorithm::Cron(3)


Want to link to this manual page? Use this URL:

home | help