Sign inSign up

perlessentials/perl-essentials

By perlessentials

•Updated 5 days ago

Threaded Perl image with curated CPAN modules for scripting, data, DB, testing, and web.

Image
Languages & frameworks
Integration & delivery
Developer tools
1

10K+

perlessentials/perl-essentials repository overview

⁠perl-essentials

perl-essentials extends the official Perl images with a curated, production-oriented CPAN stack commonly required for automation, data processing, reporting, database access, testing, profiling, and web integrations.

Source and complete documentation: https://github.com/M-M-M-M/perl-essentials⁠

⁠Included module families

  • Database: DBI, DBD::Pg, DBD::SQLite
  • JSON: JSON, JSON::SIMD, JSON::XS, Cpanel::JSON::XS, JSON::MaybeXS
  • XML: XML::LibXML, XML::Hash, XML::XML2JSON
  • HTTP/Web: LWP::UserAgent, REST::Client, HTTP::Cookies
  • Spreadsheet: Excel::Writer::XLSX, Spreadsheet::XLSX
  • Testing: Test::More, Test::MockModule
  • Quality: Perl::Critic, Perl::Tidy
  • Profiling: Devel::NYTProf
  • Concurrency: threads, threads::shared, Thread::Queue
  • Date/Time: DateTime, Date::Calc

⁠Usage examples

Published images run by default as the non-root perl user with UID/GID 1000:1000. For writable host bind mounts, pass --user "$(id -u):$(id -g)" to preserve host ownership. Use --user root only for explicit administrative operations.

Bind mounts retain numeric host ownership. A host UID/GID may therefore be displayed under a different name inside the container while remaining correct on the host; no chown is needed. The global Zsh configuration applies to all users, and a minimal personal .zshrc prevents the new-user assistant without overwriting custom settings.

Codex uses Bubblewrap for its Linux sandbox. Ubuntu 24.04 hosts may require the distribution bwrap-userns-restrict AppArmor profile before the sandbox can configure non-root user and network namespaces. Local linux/amd64 validation on Apple Silicon Docker Desktop runs through emulation; a Codex SeccompInstall/Invalid argument sandbox failure there is handled as a documented local smoke-test limitation, while native CI keeps the sandbox validation strict.

docker run --rm perlessentials/perl-essentials:5.45 \
  perl -MDBI -MJSON -e 'print "ready\n"'
docker run --rm -it --user "$(id -u):$(id -g)" \
  -v "$PWD":/work \
  perlessentials/perl-essentials:5.45
docker run --rm -it --user "$(id -u):$(id -g)" \
  -v "$PWD":/work \
  -v "$PWD/codex-auth":/codex \
  perlessentials/perl-essentials:codex zsh -l
docker run --rm perlessentials/perl-essentials:5.26 perl -e 'print "$^V\n"'

⁠Perl development tools

The image includes perltidy, perlcritic, prove, cpanm, rg, parallel, hyperfine, and the GNU-prefixed commands gcat, gfind, ggrep, and gsed.

Perl::Tidy uses /etc/perltidyrc by default. A project-local .perltidyrc under /work takes precedence. Use -pro=/work/custom.perltidyrc to select a specific profile, or -npro to ignore all profiles.

Preview formatting without modifying the mounted file:

docker run --rm --user "$(id -u):$(id -g)" -v "$PWD":/work \
  perlessentials/perl-essentials:5.45 \
  perltidy -st -se /work/path/to/script.pl

Format in place without creating a backup, using the host user to preserve file ownership:

docker run --rm --user "$(id -u):$(id -g)" -v "$PWD":/work \
  perlessentials/perl-essentials:5.45 \
  perltidy -b -bext='/' /work/path/to/script.pl

⁠Available targets

Perl seriesImage versionRole
5.265.26.3Legacy baseline
5.325.32.1Broad legacy compatibility
5.365.36.3Common LTS distributions
5.385.38.5Established production series
5.405.40.5Maintained stable series
5.425.42.3Previous stable series
5.445.44.0Latest stable series
5.455.45.4Development compatibility

⁠Codex target

A codex target is also available, based on the Perl 5.44.0 image:

TargetPerl baseCodex CLIRTKPublication
codex5.44.0Latest at no-cache build; 0.166.0 observed 2026-11-03 19:15:38Latest at no-cache build; 1.1.0 observed 2026-11-03 19:15:38codex, release, and timestamp tags
codex-dev5.45.4Latest at no-cache build; 0.166.0 observed 2026-11-03 19:15:38Latest at no-cache build; 1.1.0 observed 2026-11-03 19:15:38codex-dev, release, and timestamp tags

The Perl bases above are the configured targets. Inspection of the published v0.11.0-codex and v0.11.0-codex-dev images found that both actually run Perl 5.45.4 and share a digest. The mutable codex alias has since been repaired and verified on both architectures with Perl 5.44.0; the historical release tags remain unchanged.

⁠Included Perl modules

Versions captured on 2026-11-03 19:15:38 (UTC).

This inventory was captured from the default image at the timestamp above. Module versions may differ between publication runs. For an exact image, see /opt/perl-essentials/module-versions.txt.

ModuleVersion
Archive::Zip1.68
Archive::Zip::MemberRead1.68
Array::Compare3.0.8
Cpanel::JSON::XS4.80
Cwd3.95
DBD::SQLite1.78
DBI1.656
Data::Dumper2.192
Data::Peek0.54
Date::Calc6.4
DateTime1.68
DateTime::Format::Excel0.31
DateTime::Format::ISO86010.19
Devel::NYTProf6.16
Digest::SHA6.04
Encode3.25
Excel::Writer::XLSX1.15
Excel::Writer::XLSX::Utility1.15
File::Copy2.43
File::Path2.18
File::Spec3.95
File::Temp0.2312
File::Which1.27
Getopt::Long2.58
HTTP::Cookies6.12
HTTP::Request::Common7.04
I18N::Langinfo0.24
IO::Pty1.31
Imager1.040
JSON4.11
JSON::Lines1.12
JSON::MaybeXS1.004008
JSON::PP4.18
JSON::SIMD1.08
JSON::XS4.04
LWP::UserAgent6.83
List::MoreUtils0.430
List::Util1.70
MIME::Base643.16_01
MIME::Lite3.038
MIME::Parser5.522
Math::Units1.3
Mojolicious::Lite9.53
Net::LDAP0.68
Net::SFTP::Foreign1.93
Perl::Critic1.156
Perl::Tidy20260826
Scalar::Util1.70
Schedule::RateLimiter0.01
Sort::Key1.33
Spreadsheet::XLSX0.20
Test::MockModule0.185.3
Test::More1.302226
Text::CSV2.06
Text::Iconv1.7
Thread::Queue3.14
Time::Duration1.21
Time::HiRes1.9780
Time::Limit0.003
URI::Escape5.40
XML::Hash0.95
XML::LibXML2.0213
XML::LibXML::XPathContext2.0213
threads2.45
threads::shared1.73
utf81.29
utf8::all0.026
DateTime::Locale1.47
DBD::Pg3.21.2
REST::Client281
XML::XML2JSON0.06

Stable aliases latest and codex follow the latest configured stable Perl (currently 5.44.0). Development aliases dev and codex-dev follow the configured development Perl (currently 5.45.4).

Tag summary

Content type

Image

Digest

sha256:d3dc25e70…

Size

465.2 MB

Last updated

5 days ago

docker pull perlessentials/perl-essentials