Skip to content

bollwarm/perlres

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 

Repository files navigation

Language Perl PullRequestClub

perlres

List of resources about Perl ๐Ÿช

Perl 5 raptor

Perl 5 raptor from kraih, licence CC-BY-SA 4.0

๐Ÿ“‹ Summary

Derived from LinuxFR french article Pour tout savoir du Perl post-moderne

As a reminder, Perl is a general-purpose programming language created inย 1987 by Larryย Wall.

"Perl continues to flourish into its fourth decade thanks to a vibrant community of users and developers" (dixit perldelta)

Perl is distributed under a dual licenceย : Artisticย Licence andย GPLโ€ฏv1+. Most of CPAN modules follow the same rule.


๐Ÿ‘ท Perlย core development

๐Ÿ‘” Official

โš’๏ธ Distributions, modules and installers

๐Ÿช General

โ›ฝ Around the CPAN

๐Ÿป Social

Community

Newsfeeds

Blogging

Conferences

๐Ÿ“– Official documentation

Perlย regex

๐Ÿ‡บ๐Ÿ‡ธ Tutorials

๐Ÿ‡ซ๐Ÿ‡ท Tutorials in French

๐Ÿ“ณ Interactive tutorials

  • ๐Ÿ•Perltuts - Learn modern Perl any time and from everywhere ๐Ÿ’œ
  • ๐ŸŸ Learnย Perl - Free interactive Perl tutorial ๐Ÿ’™
  • ๐Ÿซ TryPerl - TryRuby clone for Perl โค๏ธ (github)

๐Ÿซ Tutorials meta-site

:trollface: Perl folklore

  • ๐Ÿ’ฃ "Perl" vs "perl"ย - Perl is the language, perl is the interpreter, PERL is how you catch newbies ๐Ÿ‘ถ
  • :neckbeard: JAPH - Just Another Perlย Hacker
  • ๐ŸŒ  PerlSecret - Secret operators and their nice nicknames
  • โž• $A++ - More than three hundred ways to increment $A, by the Paris Perl Mongers

  • ๐Ÿ’ฉ PHP was sometimes referred as People Hate Perl ๐Ÿ˜
  • ๐Ÿ’ฉ Write Only Language - Relatively common ๐Ÿ˜
  • ๐Ÿผ Baby Perl - Programming with a reduced set of builtins and idioms ๐Ÿ‘ถ
  • ๐Ÿ˜Ž Perl idioms - Perl offers powerful idiomatic expressions (see fluent Perl or this node)
  • ๐Ÿ˜ Principle of least astonishment - Apply to experienced programmers ๐Ÿ˜œ
  • ๐ŸŒŠ The CPAN river - Metaphor about CPAN dependencies
  • ๐ŸŽƒ The keeper of the pumpkin - The Perl maintainer (currently Sawyer X)
  • ๐Ÿ’— Blead - Blead is the default development branch for Perl
  • ๐Ÿ“Ž Perl is often considered as being the duct tape of the Internet

  • ๐Ÿช Larry Wall Homepage - Prepare your eyes
  • ๐Ÿ’Ž Pearl of great price - The biblical reference that inspired Larry Wall to name Perl
  • ๐Ÿช Perl fortunes - Collection of Perl related quotes to be used as a fortune database

๐ŸŽƒ Perl Ecosystem

  • โ›ฝ CPAN - It is commonly accepted that the Perl killerย app is CPAN ("CPAN is the language, Perl is just the syntax" - Audrey Tang)
  • ๐Ÿ’Š MetaCPAN - Search the CPAN

News and forums engines

CMS

Blogging

Mailing lists engines

Email filtering

  • ๐Ÿ”ช SpamAssassin - Email spam filtering
  • ๐Ÿ“ง Amavis - Email filter interface
  • ๐Ÿ“ฌ POP file - Email filtering
  • โ›” ASSP - Anti Spam
  • ๐Ÿ‘ PostGrey - Postfix policy server implementing greylisting (github)

Communication

Monitoring

  • ๐Ÿ“ˆ Munin - Supervision software (like Nagios and Shinken)
  • ๐Ÿ“‰ Monitorix - Lightweight system monitoring tool
  • ๐Ÿ“Š MRTG - Monitoring traffic load on network links (github)
  • ๐Ÿ“‰ Webmin - Web interface to administer Unix like machines
  • ๐Ÿ” Open Smart - Network and application monitoring
  • ๐Ÿ“‰ Loggerithim - Monitoring and remote management package
  • ๐Ÿ“Š OPS View - Network and application monitoring
  • โณ Net Disco - Network management tool
  • ๐Ÿšฌ SmokePing - Monitor network latency (github)
  • ๐Ÿ“ผ Stormons - Monitoring and mapping SAN storage devices.
  • ๐Ÿ“ˆ Proclet - Minimalist supervisor
  • ๐Ÿ”‹ Rainbarf - Fancy resource usage charts
  • โŒš Thruk - Multi-backends web interface for monitoring (github)
  • ๐Ÿ“ˆ Mailgraph - Mail statistics graphs (github)

Logs analyzers

Job queues

  • ๐Ÿ™ Minion - A high performance job queue
  • ๐Ÿ‘ท Gearman - Job server
  • ๐ŸšŸ Qudo - Job queue manager
  • ๐Ÿšž Resque - Job queue manager
  • ๐Ÿšก TheSchwartz - Job queue manager
  • ๐Ÿ“ก Helios - Distributed job processing and application framework

Tickets trackers

Wiki

E-Commerce

Backup tools

  • ๐Ÿ’พ RSnapshot - Backup utility based on rsync
  • ๐Ÿ’ฝ ABT - Another Backup tool
  • ๐Ÿ’ฟ Backup PC - Backup tool

Games

Web application frameworks

  • โ˜๏ธ Mojolicious - Web framework created by Sebastianย Riedel (CPAN profile)
  • ๐Ÿ’ซ Catalyst - Web framework
  • ๐Ÿ’ƒ Dancer - Minimalist Web framework created byย Alexisย Sukrieh (see Dancer 1 and Dancer 2)
  • ๐ŸŠ Jifty - Web framework
  • โ˜๏ธ Cyclone 3 - Web application framework
  • ๐Ÿ Amon - Web application framework (github)
  • ๐Ÿ‘ Poet - Web application framework
  • ๐Ÿ˜ Gantry - Web application framework
  • ๐Ÿฆ Kossy - Simple web application framework
  • ๐Ÿผ Squatting - Web microframework
  • ๐Ÿบ Tatsumaki - Non-blocking web framework based on Plack and AnyEvent
  • ๐Ÿ‡ Raisin - REST API micro framework
  • ๐Ÿ‹ Maypole - MVC web application framework
  • ๐Ÿฌ Angelos - Web application framework
  • ๐ŸŸ Web::Simple - Simple web application framework
  • ๐Ÿ Ark - Lightweight Catalyst-ish web application framework
  • ๐Ÿฏ Shenker - Web application framework
  • ๐Ÿ‚ Noe - Web application framework
  • ๐Ÿ† Kamui - Web application framework based on Plack
  • ๐ŸŒ Web Nano - Really minimalistic web framework.
  • ๐Ÿ RapidApp - Web toolkit and framework based on Catalyst (github)
  • โ„๏ธ Kelp - A web framework light (github)
  • ๐Ÿ˜‡ Marquee - Yet another Mojo based web framework (github)
  • ๐Ÿท Piggly - A straight forward PSGI web framework
  • ๐Ÿ› PEF::Front - A web framework

PSGI adapters and web servers

  • ๐Ÿท Plack - PSGI toolkit and server adapter
  • ๐Ÿ— HTTP::Server::Simple - Simple standalone HTTP daemon
  • ๐Ÿฏ HTTP::Daemon - Simple http server class
  • ๐Ÿฐ HTTP::Tiny - Minimalist HTTP client
  • ๐Ÿถ Continuity - Library to simplify web applications (including a web server)
  • ๐Ÿญ Starman - High-performance preforking PSGI server
  • ๐Ÿฑ Twiggy - AnyEvent HTTP server for PSGI
  • ๐Ÿป Starlet - Simple and high-performance PSGI server
  • ๐Ÿธ Corona - Asynchronous PSGI server
  • ๐ŸŽ Gazelle - Preforked Plack handler for performance freaks
  • ๐Ÿด Arriba - PSGI server with SPDY support
  • ๐Ÿน Perlbal - HTTP load balancer
  • ๐Ÿ‚ HTTP::Engine - Web server
  • ๐Ÿ• Feersum - PSGI engine based on EV/libev
  • ๐Ÿ‘น Server::Starter - Super Daemon to handle hot deployment of server programs
  • ๐Ÿ Starlight - PSGI/Plack HTTP server with pre-forks

Templating

Compiler and alternative interpreters

  • ๐Ÿ”ง Compiler Perlito - Perlย toย Java and Perlย toย JavaScript
  • ๐Ÿ’ช RPerl - Restricted Perl, an optimizing compiler (github)
  • ๐Ÿ”ง CPerl - Alternative Perl interpreter
  • ๐Ÿ”จ TinyPerl - Very compact Perl binary to be shipped with your scripts
  • ๐Ÿ’ธ StaticPerl - Helper script to create self contained statically linked Perl binary + script
  • ๐Ÿ”ง Compiler PerlC - Perl to C compiler
  • ๐Ÿช Relocatable Perl - Patched Perl binary to make it relocatable
  • ๐Ÿ‘ท Perl Build - A Perl builder
  • ๐Ÿ”จ Perl Cross - Configure and cross-compile perl
  • ๐Ÿ”ง Stableperl - Perl fork aiming for stability

Perl Application Bundlers / Packagers

  • ๐ŸŽ PAR::Packer - Generate standalone executables from Perl programs
  • ๐Ÿพ Perl Executing Browser - HTML interface for Perl desktop applications
  • ๐Ÿ’ฐ PerlApp - Convert Perl program into a standalone application (commercial : part of ActiveState Perl Dev Kit)
  • ๐Ÿ’ต Perl2Exe - Convert Perl scripts to executable file (commercial)
  • ๐Ÿ”ฉ App::FatPacker - Pack your dependencies onto your script file
  • โœจ Use PAR::Packer, Mojolicious, and Mojolicious::Plugin::Loco to create self-contained "web" application that runs locally, and uses web browser for GUI.
  • ๐ŸŽ PPM - Perl Package Manager

Assets management

Git

Database tooling

  • ๐Ÿ’ฝ MySQL Tuner - MySQL configuration and tuning
  • ๐Ÿ’ฟ Sqitch - Database change management application
  • ๐Ÿ“ผ ETL - Data migration helper
  • ๐Ÿ“€ QDepo - Graphical software to convert various DB data to various office formats

IDE

Continuous Integration

Desktop Applications

  • ๐ŸŽฅ Shutter - Screenshot utility
  • ๐Ÿ’ป Ravada - Remote Virtual Desktops Manager
  • โœ๏ธ Kephra - Editor
  • ๐Ÿ† GUIDeFATE - Design GUI in ASCII art

Tooling for Devs

  • ๐Ÿ‘ด GNU Automake - Automatically generates Makefile.in files
  • ๐Ÿ” Cloc - Count line of code
  • ๐Ÿ”ง Devel::hdb - Another Perl debugger
  • ๐ŸŽ‰ Diff So Fancy - The best-lookin' diffs
  • ๐Ÿ”ฅ Flame Graphs - Profiled code visualization
  • ๐ŸŒˆ Markdown - Markdown was initially created by John Gruber and Aaron Schwartz and implemented in Perl (git)
  • ๐Ÿ”ง Daiku - Kind of make
  • ๐Ÿ”ข PDL - For scientific calculations
  • ๐Ÿ‘œ Fink Project - Tool to help porting software from UNIX like to macOS
  • ๐Ÿ”„ Reply - Perl REPL
  • ๐Ÿ˜ผ Ack - Grep replacement, optimized for developers (ack 1, ack 2 and ack 3)
  • ๐Ÿ“ POD Web View - Edit POD file with live preview (github)
  • ๐Ÿ GNU Parallel - Shell tool to execute commands in parallel (github)
  • ๐Ÿ“บ Hl - PCRE-based highlighter for terminal
  • ๐Ÿ“ˆ st - Simple statistics from the command line

Sysadmin

  • ๐Ÿ• Rex - A framework to simplify system administration and datacenter automation (github)
  • ๐Ÿš€ Proxmox VE - A virtualization and LXC platform
  • ๐Ÿ’ฝ CloneZilla - Partition and disk imaging/cloning program
  • ๐Ÿ“ก Zevenet - Load balancer (github)
  • โ™ป๏ธ Virtualmin - Hosting and website control panel
  • ๐Ÿ’Š Pinto - Create local CPAN repositories
  • ๐Ÿฎ Cowsay - The cow that can speak
  • ๐Ÿ  Asciiquarium - An aquarium in your terminal
  • ๐Ÿ”ž Web Sorrow - Security scanner
  • ๐Ÿ‘ช LemonLDAP::NG - WebSSO, Access Management and Identity Federation
  • :suspect: PacketFence - Network access control (NAC) solution (github)
  • ๐Ÿ™ Plain VM - Controle multiple VMs
  • ๐Ÿ›„ Urpmi - Package manager
  • ๐ŸŽ’ Trizen - Lightweight AUR Package Manager
  • ๐Ÿ“ง Ashafix - Postfixadmin port in Perl
  • โ†ช๏ธ Shorewall - Gateway/firewall configuration tool
  • ๐Ÿ”ง NicTool - A DNS management solution (github)
  • ๐Ÿ”’ Ferm - A frontend for iptables
  • ๐Ÿƒ SQLFairy - Convert SQL statements to graphs (github)
  • ๐Ÿ’ป RemoteBox - VirtualBox Client with Remote Management
  • ๐Ÿ”ซ Nipe - Script to make Tor network your default gateway
  • ๐Ÿค– Nikto - Webservers security scanner
  • ๐Ÿ’ฝ ZnapZend - Backup ZFS with remote capabilities

Hosting

  • โ˜๏ธ cPanel - Hosting platform
  • ๐Ÿ“ก Perloku - Deploy Perl apps on Heroku

Uncategorized

  • ๐Ÿ‰ OpenFoodFacts - Open database about food
  • ๐Ÿ”ฉ EPrints - Software to build Open Access repositories (github)
  • ๐Ÿ” Dezi - Search platform
  • ๐Ÿ‡ฏ๐Ÿ‡ต LANraragi - Web application for reading manga
  • ๐Ÿ“ฒ PerlyBook - Convert POD to EPUB/MOBI books (github)
  • ๐Ÿ”ง ExifTool - Meta informations reader/writer (github)

Other Perl lists

๐Ÿ‘ป Execute Perl online

  • ๐Ÿ†• Perl Banjoย - Share runnable Perl code โค๏ธ ๐Ÿ’ช
  • ๐Ÿฉ WebPerl - WebAssembly + Emscripten (demo andย source)
  • ๐Ÿฐ Perlbot - Run and share Perl code

๐Ÿ’ฅ Execute Perl online (sites not dedicated to Perl)

๐Ÿป Lint Perl online

๐Ÿ“š Books

  • ๐Ÿ“• Programming Perl (Camel book)
  • ๐Ÿ“— Perl Cookbook (Ram book)
  • ๐Ÿ“˜ Learning Perl (Llama book)
  • ๐Ÿ“™ Intermediate Perl (Alpaca book)
  • ๐Ÿ““ Mastering Perl
  • ๐Ÿ““ Effective Perl Programming
  • ๐Ÿ“” Modern Perl
  • ๐Ÿ“’ Perl Best Practices
  • ๐Ÿ“™ Perl hacks
  • ๐Ÿ“— Higher Order Perl
  • ๐Ÿ“˜ Beginning Perl (Curtis "Ovid" Poe)
  • ๐Ÿ“— Beginning Perl (Simon Cozens) - Free E-Book
  • ๐Ÿ“˜ Perl receptury
  • ๐Ÿ“• Beginning Perl (James D Lee)
  • ๐Ÿ“˜ Beginning Perl Programming : From novice to professionnal (William Rothwell)
  • ๐Ÿ““ Perl pocket reference
  • ๐Ÿšง A practical guide to testing
  • ๐Ÿ“™ XML and Perl
  • ๐Ÿ“— Perl and XML
  • ๐Ÿ“˜ Perl for system administration
  • ๐Ÿ“— Programming the perl DBI
  • ๐Ÿ““ CGI programming with Perl
  • ๐Ÿ“• Perl & LWP
  • ๐Ÿ““ Perl programming for the absolute beginner
  • ๐Ÿ“™ Perl graphics Programming
  • ๐Ÿ“˜ Perl for dummies
  • ๐Ÿ““ Mastering algorithms with Perl
  • ๐Ÿ“˜ The best of Perl Hacks
  • ๐Ÿ“™ Impatient Perl
  • ๐Ÿ“• Extreme Perl
  • ๐Ÿ“˜ Web, Graphics & Perl/Tk Programming
  • ๐Ÿ“• Games, Diversions and Perl Culture
  • ๐Ÿ“— Perl Template Toolkit
  • ๐Ÿ“” Web Services avec Perl
  • ๐Ÿ“™ Perl for Oracle DBAs
  • ๐Ÿ“˜ Advanced Perl Programming
  • ๐Ÿ““ Perl Testing
  • ๐Ÿ“˜ Practical Magick with C, PDL, and PDL::PP
  • ๐Ÿ“• Practical vim
  • ๐Ÿ“˜ Perl one liners
  • ๐Ÿ“• Practical mod_perl
  • ๐Ÿ“— Mod_perl pocket reference
  • ๐Ÿ“˜ Mod_perl 2 user guide
  • ๐Ÿ““ Object Oriented Perl
  • ๐Ÿ“• Perl in a nutshell
  • ๐Ÿ“— Perl testing a developer notebook
  • ๐Ÿ“˜ Beginning Perl for bioinformatics
  • ๐Ÿ“• Mastering Perl for Bioinformatics
  • ๐Ÿ““ Network programming with Perl
  • ๐Ÿ“™ Perl by example
  • ๐Ÿ“” Perl black book
  • ๐Ÿ“’ Extending and embedding Perl
  • ๐Ÿ“˜ Mod_perl developer cookbooks
  • ๐Ÿ“™ Perl core language little black book
  • ๐Ÿ“— Writing apache modules with Perl and C
  • ๐Ÿ“˜ Running weblogs with Slash
  • ๐Ÿ“™ Core Perl
  • ๐Ÿ“• Perl for the Web
  • ๐Ÿ“˜ The Definitive Guide to Catalyst: Writing Extendable, Scalable and Maintainable Perl-Based Web Applications
  • ๐Ÿ““ Data Munging with Perl
  • ๐Ÿ“” MySQL and Perl for the Web
  • ๐Ÿ““ Open Source Web Development with LAMP
  • ๐Ÿ“— Learning Perl/Tk
  • ๐Ÿ“˜ Mastering Perl/Tk
  • ๐Ÿ“™ Perl/Tk Pocket Reference
  • ๐Ÿ““ Pro Perl debugging
  • ๐Ÿ“• Regular Expression Pocket Reference
  • ๐Ÿ“™ Perl Debugger Pocket Reference
  • ๐Ÿ“” Writing CGI applications with Perl
  • ๐Ÿ“˜ Automating System administration with Perl
  • ๐Ÿ“— Minimal Perl
  • ๐Ÿ“™ Perl and regular expressions quick start workbook
  • ๐Ÿ“˜ Perl programming language (Step-by-step Perl programming book)
  • ๐Ÿ“• Embedding Perl in HTML with MASON
  • ๐Ÿ“™ Perl for website management
  • ๐Ÿ““ Picking up Perl
  • ๐Ÿ“™ Perls or wisdom
  • ๐Ÿ“˜ Perl annotated archives
  • ๐Ÿ“” Real World SQL Server Administration with Perl
  • ๐Ÿ“˜ Perl 5 internals
  • ๐Ÿ““ Practical text mining with perl
  • ๐Ÿ“™ Beginning perl web development
  • ๐Ÿ“˜ Programming for linguist Perl for language researchers
  • ๐Ÿ““ Perl for C programmers
  • ๐Ÿ“˜ Learning Perl the hard way
  • ๐Ÿ““ Perl the programmer's companion
  • ๐Ÿ“— Programming with Perl modules
  • ๐Ÿ“— Beginning Perl Web development from novice to professional
  • ๐Ÿ“™ Single Page Application with Perl Dancer - E-Book about Dancer webframework
  • ๐Ÿšง Mojolicious book
  • ๐Ÿ“ฑ Mojolicious Web Clients (Kindle Edition)
  • ๐Ÿ“• Perl Golf History - E-Book about coding competition
  • ๐Ÿ“” Testing Strategies for Modern Perl
  • ๐Ÿ““ A practical guide to testing in modern Perl
  • ๐Ÿ“™ RT Essentials
  • ๐Ÿ“— Writing Perl Modules for CPAN
  • ๐Ÿ“˜ Automating Windows with Perl
  • ๐Ÿ“• Perl Developer's Dictionary (Clinton Pierce)
  • ๐Ÿ“™ Instant CGI/Perl
  • ๐Ÿ“— Advanced programming in Perl for beginners
  • ๐Ÿ“” Web Programming with Perl 5
  • ๐Ÿ“˜ Official Guide to Programming with CGI.pm
  • ๐Ÿ““ CGI Developer's Resource: Web programming in Tcl and Perl
  • ๐Ÿ“˜ Cross Platform Perl
  • ๐Ÿ“— Pro Perl Parsing
  • ๐Ÿ“• Developing CGI Applications with Perl
  • ๐Ÿ“˜ Perl 5 Interactive Course
  • ๐Ÿ“— Selenium and Perl
  • ๐Ÿ““ Perl Taster
  • ๐Ÿ“˜ Learning Perl Exercises
  • ๐Ÿ“— Cucumber and Perl
  • ๐Ÿ“— Mojolicious Web Clients
  • ๐Ÿ“™ Teach Yourself CGI Programming with Perl 5 in a week
  • ๐Ÿ“— Penetration Testing with Perl
  • ๐Ÿ“• Hands-On Penetration Testing with Python
  • ๐Ÿ“™ Perl Scripting for Windows Security
  • ๐Ÿ“— Perl and Apache: Your visual blueprint for developing dynamic Web content
  • ๐Ÿ““ Developing Web Applications with Perl, memcached, MySQL and Apache
  • ๐Ÿ“™ Minimal Perl: For UNIX and Linux People
  • ๐Ÿ“˜ Building Tag Clouds in Perl and PHP
  • ๐Ÿ“— Wicked Cool Perl Scripts
  • ๐Ÿ“˜ Perl Web Site Workshop
  • ๐Ÿ“— Custom CGI scripting with Perl
  • ๐Ÿ““ Pro Perl
  • ๐Ÿ“˜ Perl : best 2020
  • ๐Ÿ“™ Perl Medic: Transforming Legacy Code
  • ๐Ÿ“— Computer Science & Perl Programming
  • ๐Ÿ“™ Programming PERL in the .NET Environment
  • ๐Ÿ““ Teach Yourself Perl in 21 Days
  • ๐Ÿ“™ Teach Yourself Perl in 24 Hours
  • ๐Ÿ“— Perl Debugged
  • ๐Ÿ“˜ Perl Power
  • ๐Ÿ“™ Spidering hacks
  • ๐Ÿ“— Perl XML::LibXML by Example (github)
  • ๐Ÿ“˜ The Perl Language (WIP)
  • ๐Ÿ“™ Programming Web Graphics with Perl and GNU Software
  • ๐Ÿ““ Web Client Programming with Perl
  • ๐Ÿ“™ Learning Perl on Win32 Systems
  • ๐Ÿ“— Win32 Perl Programming: The Standard Extensions, Second Edition
  • ๐Ÿ“˜ Essential Perl
  • ๐Ÿ“˜ Welcome to Perl Country ๐Ÿ‡ฏ๐Ÿ‡ต
  • ๐Ÿ““ How to Write Perl ๐Ÿ‡ฏ๐Ÿ‡ต
  • ๐Ÿ“™ Introduction to Perl ๐Ÿ‡ฏ๐Ÿ‡ต
  • ๐Ÿ“— Les fondamentaux du langage Perl 5 : Apprentissage par la pratique (Philippe Banquet) ๐Ÿ‡ซ๐Ÿ‡ท
  • ๐Ÿ“˜ Perl moderne ๐Ÿ‡ซ๐Ÿ‡ท
  • ๐Ÿ“™ Perl 5 (David Till) ๐Ÿ‡ซ๐Ÿ‡ท
  • ๐Ÿ““ Perl reference de poche ๐Ÿ‡ซ๐Ÿ‡ท
  • ๐Ÿ“™ Perl pour lโ€™impatient ๐Ÿ‡ซ๐Ÿ‡ท
  • ๐Ÿ“” Perl en action ๐Ÿ‡ซ๐Ÿ‡ท
  • ๐Ÿ“˜ Introductions a Perl/Tk: Interfaces graphiques avec Perl ๐Ÿ‡ซ๐Ÿ‡ท
  • :greend_book: De Perl a Java : Programmation des expressions regulieres ๐Ÿ‡ซ๐Ÿ‡ท

๐Ÿš€ Develop with Perl

โฌ‡๏ธ Install CPAN modules

The modern way is to use cpanm (cpanminus). The tool is able to get the requested module and resolve dependencies. For instance, to install the excellent module XML::LibXML from Shlomif which is a wrapper of libxml2, we can do sudoย cpanm XML::LibXML, that produces the following output (truncated) :

--> Working on XML::LibXML
Fetching http://www.cpan.org/authors/id/S/SH/SHLOMIF/XML-LibXML-2.0201.tar.gz ... OK
==> Found dependencies: Alien::Libxml2
--> Working on Alien::Libxml2
Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/Alien-Libxml2-0.09.tar.gz ... OK
[...]
Building and testing Alien-Libxml2-0.09 ... OK
Successfully installed Alien-Libxml2-0.09
Configuring XML-LibXML-2.0201 ... OK
Building and testing XML-LibXML-2.0201 ... OK
Successfully installed XML-LibXML-2.0201 (upgraded from 2.0128)
13 distributions installed

Reinstalling a set of CPAN modules can be done simply by launching a bunch of cpanm commands or by specifying dependencies in a cpanfile (and using then carton or cpanm --installdeps . for the setup).

โœ”๏ธ Linters

Executable by hand or directly integrated in your scripts, IDE or editors (vim users : ale or syntastic).

  • perlย -c, to check the syntax. Be careful that it does more than only checking syntax, it actually executes the blocks BEGIN and END (compilation step). This design is the reason why the default linter used by the plugin vimย ale is no longer perlย -c (nor even perlย -w). The syntax checking in Perl is great (as well as the error messages from the interpreter... I โค๏ธ Perl)

  • Perl::Critic, that criticizes your coding style but do not check syntax. For instance, the file bad.pl containsย :

use strict;
print "toto" }{

And perl -c bad.pl printsย :

Unmatched right curly bracket at bad.pl line 3, at end of line
syntax error at bad.pl line 3, near ""toto" }"
Missing right curly or square bracket at bad.pl line 3, at end of line
bad.pl had compilation errors.

But perlcritic bad.pl tells us that everything is fine bad.plย sourceย OK (but is not happy with the missing useย strict).

  • A module that was part of the core distribution of Perl but was finally removed in Perlย 5.19โ€‰: B::Lint. While we are here, how to know the history of a module in the core distribution ? Use corelistโ€ฏ! corelist B::Lint that gives usย :
Data for 2017-09-22
B::Lint was first released with perl 5.005, deprecated (will be CPAN-only) in v5.17.9 and removed from v5.19.0

If a module goes out of core distribution it's not dramatic as it continues to be available in CPAN of course.

  • And Perl::Lint that focuses on speed while being compatible with Perl::Critic.

โš’๏ธ How to compile perl

See how to compile perl

Actually it will give thisย :

wget https://www.cpan.org/src/5.0/perl-5.30.0.tar.gz
tar -xzf perl-5.30.0.tar.gz
cd perl-5.30.0
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install

๐Ÿ’Š Compile modules

If we decide to use or not a module like cpanm, at the end the module is compiled using ExtUtils::MakeMaker or Module::Build. ExtUtils::MakeMaker is a core module, while Module::Build was added then removed (5.9ย โ†’ย 5.19). Davidย Golden explains in a blog post why he requested to remove Module::Build.

ExtUtils::MakeMaker

The module ExtUtils::MakeMaker generate a Makefile from Makefile.PLย :

perl Makefile.PL
make
make install

Module::Build

The module Module::Build serves the same goal but generates a file Build from the file BUILD.PLย :

perl Build.PL
./Build
./Build test
./Build install

๐ŸŽง How to contribute ?

Please read CONTRIBUTING.md

๐Ÿ™‡ Contributors

Thank you to all the fantastic contributors ๐Ÿ’—

About

๐Ÿช List of resources about Perl

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published