The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Text::Table::Org - Generate Org tables


This document describes version 0.031 of Text::Table::Org (from Perl distribution Text-Table-Org), released on 2022-01-23.


 use Text::Table::Org;

 my $rows = [
     # header row
     ['Name', 'Rank', 'Serial'],
     # rows
     ['alice', 'pvt', '123456'],
     ['bob',   'cpl', '98765321'],
     ['carol', 'brig gen', '8745'],
 print Text::Table::Org::table(rows => $rows, header_row => 1);


This module provides a single function, table, which formats a two-dimensional array of data as an Org text table.

The example shown in the SYNOPSIS generates the following table:

 | Name  | Rank     | Serial   |
 | alice | pvt      | 123456   |
 | bob   | cpl      | 98765321 |
 | carol | brig gen | 8745     |


table(%params) => str


The table function understands these arguments, which are passed as a hash.

  • rows (aoaos)

    Takes an array reference which should contain one or more rows of data, where each row is an array reference.

  • header_row (bool)

    If given a true value, the first row in the data will be interpreted as a header row, and separated from the rest of the table with a ruled line.

  • separate_rows (bool)

    If set to true, will add separator line between data rows.

  • caption

    Optional. String. If set, will add this line to the beginning of output (table caption will be the actual caption string that you provide):

     #+CAPTION: table caption


Please visit the project's homepage at


Source repository is at


This module is currently basically Text::Table::Tiny 0.03 modified to output Org tables instead of its original variant table format.

The output of this module is very similar to that of Text::MarkdownTable. In fact, Org recognizes its output as a valid Org table (the only difference is that corner marker is | instead of the Org standard of +).

Some other text table modules: Text::ANSITable, Text::ASCIITable, Text::FormatTable, Text::Table, Text::TabularDisplay.

See also Bencher::Scenario::TextTableModules.


perlancar <>


To contribute, you can send patches by email/via RT, or send pull requests on GitHub.

Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:

 % prove -l

If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla plugin and/or Pod::Weaver::Plugin. Any additional steps required beyond that are considered a bug and can be reported to me.


This software is copyright (c) 2022, 2015 by perlancar <>.

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


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.