Org::Document - Represent an Org document


This document describes version 0.550 of Org::Document (from Perl distribution Org-Parser), released on 2019-02-08.


 use Org::Document;

 # create a new Org document tree from string
 my $org = Org::Document->new(from_string => <<EOF);
 * heading 1a
 some text
 ** heading 2
 * heading 1b


Derived from Org::Element.


tags => ARRAY

List of tags for this file, usually set via #+FILETAGS.

todo_states => ARRAY

List of known (action-requiring) todo states. Default is ['TODO'].

done_states => ARRAY

List of known done (non-action-requiring) states. Default is ['DONE'].

priorities => ARRAY

List of known priorities. Default is ['A', 'B', 'C'].

drawer_names => ARRAY

List of known drawer names. Default is [qw/CLOCK LOGBOOK PROPERTIES/].

properties => ARRAY

File-wide properties.

radio_targets => ARRAY

List of radio target text.

time_zone => ARRAY

If set, will be passed to DateTime->new() (e.g. by Org::Element::Timestamp).

ignore_unknown_settings => bool

If set to true, unknown settings will not cause a parse failure.


new(from_string => ...)

Create object from string.


Load all Org::Element::* modules. This is useful when wanting to work with element objects retrieved from serialization, where the element modules have not been loaded.

cmp_priorities($p1, $p2) => -1|0|-1

Compare two priorities $p1 and $p2. Return result like Perl's cmp: 0 if the two are the same, -1 if $p1 is of higher priority (since it's more to the left position in priority list, which is sorted highest-first) than $p2, and 1 if $p2 is of lower priority than $p1.

If either $p1 or $p2 has unknown priority, will return undef.


 $doc->cmp_priorities('A', 'A')  # -> 0
 $doc->cmp_priorities('A', 'B')  # -> -1 (A is higher than B)
 $doc->cmp_priorities('C', 'B')  # -> 1 (C is lower than B)
 $doc->cmp_priorities('X', 'A')  # -> undef (X is unknown)

Note that X could be known if there is a #+PRIORITIES setting which defines it.


Please visit the project's homepage at


Source repository is at


Please report any bugs or feature requests on the bugtracker website

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.


perlancar <>


This software is copyright (c) 2019, 2017, 2016, 2015, 2014, 2013, 2012, 2011 by

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