CalDAV::Simple - a simple interface to calendar services via a subset of CalDAV


 use CalDAV::Simple;

 my $cal = CalDAV::Simple->new(
               username => $username,
               password => $password,
               calendar => $url,

 my @tasks = $cal->tasks;

 foreach my $task (@tasks) {
   printf "task '%s' is due '%s'\n", $task->summary, $task->due;


This is a ALPHA quality module for talking to a CalDAV server. Currently it just provides an interface for getting tasks and deleting individual tasks.

This distribution is currently a lash-up: I hacked together something to solve a problem. It does things the quick dirty way, and the interface is likely to change from release to release. So far I've only tested it against's CalDAV server: I've no idea if it will work with other servers yet. Please let me know either way.



This expects three attributes: username, password, and calendar. The latter is the URL for your calendar.


Returns a list of all tasks in the calendar. Each entry in the list is an instance of CalDAV::Simple::Task. Look at the document for that module to see what attributes are provided.


Takes a task (instance of CalDAV::Simple::Task) and deletes it from the calendar.


This is very much alpha quality and has only been tested against one CalDAV server. The XML returned by the server is currently handled with regular expressions, and I haven't read any specs to find out what range of results I can expect.

In short: your mileage may vary :-)


CalDAV::Simple::Task - instances of this are returned by the tasks() method, and expected as the argument to the delete_task() method.

Building a CalDAV client - documentation about CalDAV, which I've been using as a guide when hacking this up.

Wikipedia page - about CalDAV.



Neil Bowers <>


This software is copyright (c) 2015 by Neil Bowers <>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.