CPAN clients
- CPAN.pm
cpan -g module
: to download tarball- CPAN-Plugin-Sysdeps - CPAN.pm plugin for installing external dependencies - metacpan.org
- Experimental plugin support
- cpanm
PERL_CPANM_OPT='--from https://www.cpan.org --verify'
cpanm --mirror http://www.cpan.org/ --mirror http://backpan.perl.org/ --mirror http://cpan.cpantesters.org/ --mirror https://cpan.metacpan.org/ Local
- download all
~/.cpanm/sources/*/02packages.details.txt.gz
- download all
- cpm
- cnext
Metadata
- https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md
- https://github.com/metacpan/metacpan-examples
- http://mapofcpan.org/
- https://gephi.wordpress.com/2009/06/25/cpan-explorer-an-interactive-exploration-of-the-perl-ecosystem/
Naming Perl modules
Local
is reserved: https://pause.perl.org/pause/query?ACTION=pause_namingmodules
Building Perl modules
Minimum Perl versions:
- Perl::MinimumVersion - Find a minimum required version of perl for Perl code - metacpan.org
- Perl::MinimumVersion::Fast - Find a minimum required version of perl for Perl code - metacpan.org
- Syntax::Construct - Explicitly state which non-feature constructs are used in the code. - metacpan.org
- Add minimum specified Perl version to build matrix (GitHub Actions workflow improvements by zmughal · Pull Request #7 · perlrdf/p5-rdf-ns-curated · GitHub)
Module specificity:
- Pure-Perl modules:
- Are not: Perl version-specific, but may have have a minimum Perl version.
- Are not: Architecture-specific.
- Can be "fatpacked".
- Fatpacking:
- Or "mobundled"
- Some use an environment variable to set implementation:
Params::Util
:$ENV{PERL_PARAMS_UTIL_PP}=1
Params::Validate
:$ENV{PARAMS_VALIDATE_IMPLEMENTATION}='PP'
- others: Acme::CPANModules::XSVersions - List of XS versions of Perl modules - metacpan.org
- Alien modules
- Are not: Perl version-specific.
- Are: Architecture-specific.
- Alien::Build::Plugin::Probe::OverrideCI - Override logic for continuous integration - metacpan.org
- Alien::Build::Plugin::Fetch::Cache - Alien::Build plugin to cache files downloaded from the internet - metacpan.org
- XS modules
- Are: Perl version-specific.
- Are: Architecture-specific.
- Test without XS: Test::NoXS - Prevent a module from loading its XS code - metacpan.org
- Can be packaged using PAR or staticperl (see below)
Some modules have Pure-Perl fallbacks:
Packaging
- PAR
- PAR::Dist - Create and manipulate PAR distributions - metacpan.org
- PAR issue with DLLs Track PAR XSLoader issue on MSYS2/MinGW64 · Issue #122 · project-renard/curie · GitHub, Getting Gtk3 to work with PAR
- may need to use DLL dependency tool for Windows to automate this.
staticperl
Debian
- RPM
- relatedly for pkg-config
- https://stackoverflow.com/questions/18475961/how-to-map-pkg-config-names-to-yum-apt-get
apt-file search /usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/pkgconfig/zlib.pc
yum whatprovides 'pkgconfig(zlib)'
Version updating
- A Guide to Versions in Perl - Grinnz (blogs.perl.org)
- Sort::Versions - a perl 5 module for sorting of revision-like numbers - metacpan.org
- How can I automatically update Perl modules' $VERSION with Git? - Stack Overflow
- perl-bump-version - A tool to bump your Perl module versions - metacpan.org
- PPI-PowerToys - A handy collection of small PPI-based utilities - metacpan.org
Existing tools
Building / distributing Perl
- GitHub - tokuhirom/Perl-Build
- GitHub - tokuhirom/plenv: Perl binary manager
- Perlbrew
- Devel::PatchPerl - Patch perl source a la Devel::PPPort's buildperl.pl - metacpan.org
- GitHub - skaji/Devel-PatchPerl-Plugin-FixCompoundTokenSplitByMacro
- CPAN::Perl::Releases - Mapping Perl releases on CPAN to the location of the tarballs - metacpan.org
- CPAN::Perl::Releases::MetaCPAN - Mapping Perl releases on CPAN to the location of the tarballs via MetaCPAN API - metacpan.org
Package dependencies
- CPAN::Unwind - Recursively determines dependencies of CPAN modules - metacpan.org
- Devel-TraceUse - show the modules your program loads, recursively - metacpan.org
- Module-ExtractUse - Find out what modules are used - metacpan.org
- Perl-PrereqScanner-NotQuiteLite - a tool to scan your Perl code for its prerequisites - metacpan.org
- Perl-PrereqScanner - a tool to scan your Perl code for its prerequisites - metacpan.org
- App-scan_prereqs_cpanfile - Scan prerequisite modules and generate CPANfile - metacpan.org
- Dependencies-Searcher - Search for modules used or required by a distribution and build a report that can be used as Carton cpanfile . - metacpan.org
- Module-ScanDeps - Recursively scan Perl code for dependencies - metacpan.org
- Module-ScanDeps-Static - scan modules for dependencies - metacpan.org
- Tangerine - Examine perl files and report dependency metadata - metacpan.org
- CPAN-FindDependencies - generate reports when modules' dependencies get new releases - metacpan.org
- CPAN modules for getting module dependency information
- App::opan - A CPAN overlay for darkpan and pinning purposes - metacpan.org
- App-plx - Perl Layout Executor - metacpan.org
- GitHub - skaji/Carl
- CPAN-Mirror-Tiny - create partial CPAN mirror (a.k.a. DarkPAN) - metacpan.org
- Pinto - Curate a repository of Perl modules - metacpan.org
- CPAN::Mini - create a minimal mirror of CPAN - metacpan.org
- CPAN::Mini::Inject - Inject modules into a CPAN::Mini mirror. - metacpan.org
- V - Print version of the specified module(s). - metacpan.org
- Carton - Perl module dependency manager (aka Bundler for Perl) - metacpan.org
- Carmel - CPAN Artifact Repository Manager - metacpan.org
- Devel::Wherefore - Where the heck did these subroutines come from? - metacpan.org
- Acme::CPANModules::HidingModules - Hiding modules - metacpan.org
Distribution
Perl interpreter
- GitHub - skaji/relocatable-perl: self-contained, portable perl binaries
- GitHub - stevieb9/berrybrew: Perlbrew for Windows!
Guides
- Dist::Zilla::Starter - Guide to getting started with Dist::Zilla - metacpan.org
- Releasing Perl Modules to CPAN - Gene Boggs
- CPAN Tutorials
- Release::Checklist - A QA checklist for CPAN releases - metacpan.org
Tools
- Dist::Milla - Distribution builder, Opinionated but Unobtrusive - metacpan.org
- Dist::Iller - A Dist::Zilla & Pod::Weaver preprocessor - metacpan.org
- Minilla - CPAN module authoring tool - metacpan.org
- Distar - A CPAN Distribution Author Tool - DEV Community
- Zilla::Dist - metacpan.org
Paths
Benchmarking, Profiling
- Dumbbench - More reliable benchmarking with the least amount of thinking - metacpan.org
- Benchmark - benchmark running times of Perl code - metacpan.org
- Devel::NYTProf - Powerful fast feature-rich Perl source code profiler - metacpan.org
Parsers, transpilers
- PPI - Parse, Analyze and Manipulate Perl (without perl) - metacpan.org
- PPR - Pattern-based Perl Recognizer - metacpan.org
- Babble - EXPERIMENTAL Babel-like for perl - metacpan.org
- Guacamole - A parser toolkit for Standard Perl - metacpan.org
- SPVM - SPVM Language - metacpan.org
- RPerl - metacpan.org
- GitHub - fglock/Perlito: "Perlito" Perl programming language compiler
- Perl 11 · GitHub
- Lingy - metacpan.org
- Compiler-Parser - Create Abstract Syntax Tree for Perl5 - metacpan.org
- GitHub - mbarbon/language-p: An experimental Perl 5 parser/compiler written in Perl 5
- SunStar Systems - Perl 7 Feature Request: sealed subs for typed lexicals
- Stripping files
- Misc
- Regex
- GitHub - Perl-Oshun/oshun: Declarative data validation for variables and subroutines
Projects
Refactoring
- Devel::Deprecate - Create deprecation schedules in your code - metacpan.org
- Gradual method renaming in Perl—The Phoenix Trap
- App-PRT - Command line Perl Refactoring Tool - metacpan.org
- App::perlimports - Make implicit imports explicit - metacpan.org
- App::perlvars - CLI tool to detect unused variables in Perl modules - metacpan.org
- Perl::Critic - Critique Perl source code for best-practices. - metacpan.org
- PPIx::Refactor - Hooks for refactoring perl via PPI - metacpan.org
- Devel::Refactor - Perl extension for refactoring Perl code. - metacpan.org
Testing
- https://perldoc.perl.org/TAP::Harness
- Test::NeedsDisplay - Ensure that tests needing a display have one - metacpan.org
- Perl CPAN test metadata
- toolchain-site/lancaster-consensus.md at master · Perl-Toolchain-Gang/toolchain-site · GitHub
git clone https://github.com/travis-perl/helpers && git -C helpers grep export
- GitHub - wolfsage/p5-distribution-smoke: Distribution::Smoke - smoke various versions of a distribution against modules down the river from it
- Ant JUnit XML output
CI helpers
- GitHub - uperl/cip from plicease
- GitHub - tobyink/p5-app-ghaprove: Perl 5 distribution App-GhaProve; see homepage for downloads and documentation. from tobyink
- GitHub - houseabsolute/ci-perl-helpers: Makes comprehensive testing of Perl projects in Azure Pipelines trivial, App-CISetup - Command line tools to generate and update Travis and AppVeyor configs for Perl libraries - metacpan.org from DROLSKY
- GitHub-Actions - Work in GitHub Actions using Perl - metacpan.org from JMERELO
- GitHub - travis-perl/helpers: Travis-CI testing helper for Perl modules (unofficial)
- Install the State Tool: ActiveState Platform's CLI tool
- GitHub - FGasper/perl-github-action-tips: Tips for testing Perl modules via GitHub Actions
Debugger
- Perl Debugging Tools - perl.org
- DB::Skip - make the perl debugger skip statements in given packages or subs - metacpan.org
- Perl/Tk Debugger - ptkdb - Overview
- Regexp::Debugger - Visually debug regexes in-place - metacpan.org
- Rx - Regex debugger module - metacpan.org
- Devel-ebug - A simple, extensible Perl debugger - metacpan.org
- Devel::MAT - Perl Memory Analysis Tool - metacpan.org
- App::Stacktrace - Stack trace - metacpan.org
- Enbugger - metacpan.org
POD
- https://perldoc.perl.org/Pod::Simple::Search
- Pod::Simple - metacpan.org
- Split pod documentation from a Perl module
- Pod::Strip - Remove POD from Perl code - metacpan.org
- i18n
CPAN data
Editor / IDE tools
Discussion
Generic
- App-EditorTools - Command line tool for Perl code refactoring - metacpan.org
- Devel-PerlySense - Perl IDE backend with Emacs frontend - metacpan.org
- Devel::IntelliPerl - Auto-completion for Perl - metacpan.org
- Code-ART - Analyze/Rename/Track Perl source code - metacpan.org
- Perl::Tags - Generate (possibly exuberant) Ctags style tags for Perl sourcecode - metacpan.org
- LSP
- Vim
- GitHub - vim-perl/vim-perl: Support for Perl 5 in Vim
- GitHub - skaji/syntax-check-perl
- Vim::X - Candy for Perl programming in Vim - metacpan.org
- Vim::Helper - Extended tools to assist working with perl in vim. - metacpan.org
- Pod::Simple::Vim - Render pod for display in vim - metacpan.org
- Devel::Cover::Report::Vim - Backend for displaying coverage data in Vim - metacpan.org
- Vim::Tag - Generate perl tags for vim - metacpan.org
- Emacs
- IntelliJ
- Eclipse
- Netbeans
- Padre
- Open Perl
- Komodo
- OptiPerl