A Data::ICal object represents a VCALENDAR object as defined in the
iCalendar protocol (RFC 2445, MIME type text/calendar), as implemented in many
popular calendaring programs such as Apples iCal.
Each Data::ICal object is a collection of entries, which are objects of a
subclass of Data::ICal::Entry. The types of entries defined by iCalendar
(which refers to them as components) include events, to-do items, journal
entries, free/busy time indicators, and time zone descriptors; in addition,
events and to-do items can contain alarm entries. (Currently, Data::ICal
only implements to-do items and events.)
Data::ICal is a subclass of Data::ICal::Entry; see its manpage for more
methods applicable to Data::ICal.
new [ data => CW$data, ] [ filename => CW$file ], [ calname => CW$string ], [ vcal10 => CW$bool ], [ rfc_strict => CW$bool ], [ auto_uid => CW$bool ]
Creates a new Data::ICal object.
If it is given a filename or data argument is passed, then this parses the
content of the file or string into the object. If the vcal10 flag is passed,
parses it according to vCalendar 1.0, not iCalendar 2.0; this in particular impacts
the parsing of continuation lines in quoted-printable sections.
If a calname is passed, sets x-wr-calname to the given string. Although
not specified in RFC2445, most calendar software respects x-wr-calname
as the displayed name of the calendar.
If the rfc_strict flag is set to true, will require Data::ICal to
include UIDs, as per RFC2445:
18.104.22.168 Unique Identifier
... The property MUST be specified in the "VEVENT", "VTODO",
"VJOURNAL" or "VFREEBUSY" calendar components"
If the auto_uid flag is set to true, will automatically generate a
default UID for each type which requires it, based on the RFC-suggested
algorithm. Explicitly-set UID attributes will override this
If a filename or data argument is not passed, this just sets the
objects VERSION and PRODID properties to 2.0 (or 1.0 if the
vcal10 flag is passed) and the value of the product_id method
Returns a false value upon failure to open or parse the file or data; this false
value is a Class::ReturnValue object and can be queried as to its
parse [ data => CW$data, ] [ filename => CW$file, ]
Parse a .ics file or string containing one, and populate $self
with its contents.
Should only be called once on a given object, and will be automatically
called by new if you provide arguments to new.
Returns $self on success. Returns a false value upon failure to
open or parse the file or data; this false value is a
Class::ReturnValue object and can be queried as to its
Data::ICal does not support time zone daylight or standard entries,
so time zone components are basically useless.
While Data::ICal tries to check which properties are required and
repeatable, this only works in simple cases; it does not check for
properties that must either both exist or both not exist, or for
mutually exclusive properties.
Data::ICal does not check to see if property parameter names are
known in general or allowed on the particular property.
Data::ICal does not check to see if nested entries are nested
properly (alarms in todos and events only, everything else in
The only property encoding supported by Data::ICal is quoted
Please report any bugs or feature requests to
firstname.lastname@example.org, or through the web interface at