The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Acme::CPANModules::BrowsingTableInteractively - List of modules/tools for browsing table data interactively

VERSION

This document describes version 0.009 of Acme::CPANModules::BrowsingTableInteractively (from Perl distribution Acme-CPANModules-BrowsingTableInteractively), released on 2023-06-15.

DESCRIPTION

This list reviews what tools are available on CPAN and in general to browse table data interactively.

Let me say first that the best tools are not Perl-based since sadly Perl is not a favorite choice for writing tools these days. That said, Perl is still a great glue to help make those tools work together better for you.

1) Visidata, https://www.visidata.org

This is currently my favorite. It's terminal-based, written in Python, and has more features than any other tools currently written in Perl, by far. vd has support for many formats, including CSV, TSV, Excel, JSON, and SQLite. It makes it particularly easy to create summary for your table like histogram or sum/average/max/min/etc, or add new columns, or edit some cells. It also has visualization features like XY-plots.

It has the concept of "sheets" like sheets in a spreadsheet workbook so anytime you filter rows/columns or create summary or do some other derivation from your data, you create a new sheet which you can edit, save, and destroy later as needed and go back to your original table. It even presents settings and metadata as sheets so you can edit them as a normal sheet.

It has plugins, and I guess it should be simple enough to create a plugin so you can filter rows or add columns using Perl expression instead of the default Python, if needed.

My CLI framework Perinci::CmdLine (Perinci::CmdLine::Lite, v1.918+) has support for Visidata. You can specify command-line option --format=vd to browse the output of your CLI program in Visidata.

2) DataTables, https://datatables.net

DataTables is a JavaScript (jQuery-based) library to add controls to your HTML table so you can filter rows incrementally, sort rows, reorder columns, and so on. It also has plugins to do more customized stuffs. I still prefer Visidata most of the time because I am comfortable living in the terminal, but I particularly love the incremental searching feature that comes built-in with DataTables.

My CLI framework Perinci::CmdLine (Perinci::CmdLine::Lite, v1.918+) also has support for DataTables. You can specify command-line option --format=html+datatables to output your CLI program's result as HTML table (using Text::Table::HTML::DataTables) when possible and then browse the output in browser.

3) Tickit::Widget::Table, Tickit::Widget::Table

This module lets you browse the table in a terminal. Using the Tickit library, the advantages it's supposed to have is mouse support. It's still very basic: you either have to specify each column width manually or the width of all columns will be the same. There's no horizontal scrolling support or a way to see long text in a column. Not updated since 2016.

4) Term::TablePrint, Term::TablePrint

This module lets you browse the table in a terminal. Provides roughly the same features like Tickit::Widget::Table with an extra one: you can press Enter on a row to view it as a "card" where each column will be displayed vertically, so you can better see a row that has many columns or columns with long text.

There is currently no support beyond the most basic stuffs, so no column hiding, reordering, etc.

5) less

Don't forget the good ol' Unix pager. You can render your table data as an ASCII table (using modules like Text::Table::More, Text::ANSITable, or Text::Table::Any for more formats to choose from) then pipe the output to it. At least with less you can scroll horizontally or perform incremental searching (though not interactive filtering of rows).

6) SQLite browser, SQLiteStudio, or other SQLite-based front-ends

Another way to browse your table data interactively is to export it to SQLite database then use one of the many front-ends (desktop GUI, web-based, TUI, as well as CLI) to browse it. If you have your table data as a CSV, you can use the csv2sqlite script from App::SQLiteUtils to convert it to SQLite database.

https://sqlitebrowser.org

http://sqlitestudio.pl

6) Microsoft Excel, LibreOffice, or other spreadsheet programs

Yet another way to browse your table data interactively is to use a spreadsheet, which offers a rich way to view and manipulate data. You can generate a CSV from your table data; all spreadsheets support opening CSV files.

ACME::CPANMODULES ENTRIES

Tickit::Widget::Table

Author: TEAM

Term::TablePrint

Author: KUERBIS

Text::Table::HTML::DataTables

Author: PERLANCAR

App::SQLiteUtils

Author: PERLANCAR

FAQ

What is an Acme::CPANModules::* module?

An Acme::CPANModules::* module, like this module, contains just a list of module names that share a common characteristics. It is a way to categorize modules and document CPAN. See Acme::CPANModules for more details.

What are ways to use this Acme::CPANModules module?

Aside from reading this Acme::CPANModules module's POD documentation, you can install all the listed modules (entries) using cpanm-cpanmodules script (from App::cpanm::cpanmodules distribution):

 % cpanm-cpanmodules -n BrowsingTableInteractively

Alternatively you can use the cpanmodules CLI (from App::cpanmodules distribution):

    % cpanmodules ls-entries BrowsingTableInteractively | cpanm -n

or Acme::CM::Get:

    % perl -MAcme::CM::Get=BrowsingTableInteractively -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n

or directly:

    % perl -MAcme::CPANModules::BrowsingTableInteractively -E'say $_->{module} for @{ $Acme::CPANModules::BrowsingTableInteractively::LIST->{entries} }' | cpanm -n

This Acme::CPANModules module also helps lcpan produce a more meaningful result for lcpan related-mods command when it comes to finding related modules for the modules listed in this Acme::CPANModules module. See App::lcpan::Cmd::related_mods for more details on how "related modules" are found.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Acme-CPANModules-BrowsingTableInteractively.

SOURCE

Source repository is at https://github.com/perlancar/perl-Acme-CPANModules-BrowsingTableInteractively.

SEE ALSO

Related lists: Acme::CPANModules::TextTable, Acme::CPANModules::WorkingWithCSV.

Acme::CPANModules - about the Acme::CPANModules namespace

cpanmodules - CLI tool to let you browse/view the lists

AUTHOR

perlancar <perlancar@cpan.org>

CONTRIBUTING

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, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE

This software is copyright (c) 2023, 2022, 2021 by perlancar <perlancar@cpan.org>.

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

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Acme-CPANModules-BrowsingTableInteractively

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.