Catmandu(3pm)
π Catmandu β the Catmandu(3pm) manual page, but make it make sense π
okay so bestie, welcome to Catmandu, which is a data toolkit and honestly? it's giving main character energy in the Perl ecosystem. this is section 3pm, the User Contributed Perl Documentation, and we're gonna go through every single thing in it together. grab a strawberry π, sit down, let's go.
β¨ NAME β¨
Catmandu β a data toolkit. that's it. that's the name. short, iconic, no notes. π
β¨ SYNOPSIS β¨
okay so here's the vibe from the command line, no cap:
# From the command line
# Convert data from one format to another
$ catmandu convert JSON to CSV < data.json
$ catmandu convert CSV to YAML < data.csv
$ catmandu convert MARC to YAML < data.mrc
# Fix data, add, delete, change fields
$ catmandu convert JSON --fix 'move_field(title,my_title)' < data.json
$ catmandu convert JSON --fix all_my_fixes.txt < data.json
# Use a moustache preprocessor on the fix script
$ catmandu convert JSON --fix all_my_fixes.txt --var opt1=foo --var opt2=bar < data.json
# run a fix script
$ catmandu run myfixes.fix
# or, create an executable fix script
$ cat myfixes.fix
#!/usr/local/bin/catmandu run
do importer(OAI,url:"http://biblio.ugent.be/oai")
retain(_id)
end
$ chmod 755 myfixes.fix
$ ./myfixes.fix
like, look at her go. converting formats, fixing data, running scripts, becoming an executable file with a shebang β versatile queen π
β¨ DESCRIPTION β¨
so what IS Catmandu, you ask? she provides a command line tools for the conversion of various data formats, including: JSON, YAML, RDF, CSV, TSV, XML and even Excel. yes bestie, Excel. she said "I contain multitudes." π
and then β plot twist β using extension modules, specialized conversions for metadata formats using in libraries, archives and museums is also supports. we provide support for MARC, MAB, MODS, OAI-PMH, PICA, PNX, RIS, LIDO, SRU and Z39.50. libraries, archives AND museums?? she's a triple threat fr fr. π
now, specialized conversions require a mapping language. this is implemented in Catmandu using the Fix language. for a short introduction read Catmandu::Introduction. online tutorials can be found at the end of this document. iykyk β go read the SEE ALSO, it's right there at the bottom. π
β¨ INSTALL β¨
πΈ From Source πΈ
here's how you build her from scratch, bestie:
# Clone the directory
git clone https://github.com/LibreCat/Catmandu
# Build
cd Catmandu
cpanm -n -q --installdeps --skip-satisfied .
perl Build.PL && ./Build && ./Build install
clone, build, install. slay. π
π¦ Using Docker π¦
or, if containers are your roman empire:
docker build -t librecat/catmandu .
# Run catmandu with access to you local files at <YourDrive>
docker run -v <YourDrive>:/home/catmandu/Home -it librecat/catmandu
# E.g.
docker run -v C:\Users\alice:/home/catmandu/Home -it librecat/catmandu
okay the Windows example path is literally C:\Users\alice and that's so real of them. π
β¨ INSTALL EXTENSIONS β¨
want more? of course you do. get more with:
cpanm install <PackageName>
# E.g.
cpanm install Catmandu::MARC
that's it. that's the whole thing. easy. β¨
β¨ POPULAR EXTENSIONS β¨
the girlies that everyone's obsessed with, in order:
Catmandu::BreakerCatmandu::IdentifierCatmandu::MARCCatmandu::OAICatmandu::PICACatmandu::RDFCatmandu::SRUCatmandu::StatCatmandu::TemplateCatmandu::ValidatorCatmandu::XLSCatmandu::XSDCatmandu::Z3950
pick your fighter. π
β¨ SEE ALSO β¨
go look at these, bestie, they're the supporting cast:
- introduction β
Catmandu::Introduction - documentation β <http://librecat.org/>
- blog β <https://librecatproject.wordpress.com/>
- step-by-step introduction from basics β <https://librecatproject.wordpress.com/2014/12/01/day-1-getting-catmandu/>
- command line client β
catmandu - Perl API β
Catmandu::PerlAPI
(the links are links, i'm not making them pretty, they're literally the URLs. π )
β¨ AUTHOR β¨
Nicolas Steenlant, <nicolas.steenlant at ugent.be> β the original icon, the blueprint, the moment. π«Ά
β¨ CONTRIBUTORS β¨
the whole group chat showed up for this one, and we're naming every single one because every contribution ate:
- Patrick Hochstenbach,
patrick.hochstenbach at ugent.be - Nicolas Franck,
nicolas.franck at ugent.be - Johann Rolschewski,
jorol at cpan.org - Vitali Peil,
vitali.peil at uni-bielefeld.de - Jakob Voss,
nichtich at cpan.org - Magnus Enger,
magnus at enger.priv.no - Christian Pietsch,
christian.pietsch at uni-bielefeld.de - Dave Sherohman,
dave.sherohman at ub.lu.se - Snorri Briem,
snorri.briem at ub.lu.se - Pieter De Praetere,
pieter.de.praetere at helptux.be - Doug Bell
- Upsana,
me at upasana.me - Stefan Weil
- Tom Hukins
- Michal Josef Ε paΔek
<michal.josef.spacek at gmail.com>
that's a whole roster. that's a squad. that's community. π
β¨ QUESTIONS, ISSUES & BUG REPORTS β¨
got a question about how to use our modules? found a bug? want a feature? please use our issue tracker at:
https://github.com/LibreCat/Catmandu/issues
do not suffer in silence bestie, we literally built a whole tracker for you. π«Ά
β¨ LICENSE AND COPYRIGHT β¨
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See <http://dev.perl.org/licenses/> for more information.
ngl the whole "either/or license" thing is very choose your own adventure of them and i respect it. π
okay that's the whole page!! you made it!! this was the Catmandu(3pm) page β perl v5.40.1, dated 2026-01-24 β and honestly? she's still that girl. πβ¨ππ¦πΈπ
π«Άππ₯ππβππππ§π
now go convert something. periodt. π
π¦ where this page comes from
- ubuntu resolute: libcatmandu-perl 1.2025-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libcatmandu-perl 1.2025-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms