990 lines
43 KiB
HTML
990 lines
43 KiB
HTML
<h1 id="awesome-perl-awesome">Awesome Perl <a
|
||
href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p>A curated list of awesome Perl resources, including frameworks,
|
||
libraries and software. Inspired by <a
|
||
href="https://github.com/avelino/awesome-go">awesome-go</a>.</p>
|
||
<h3 id="another-module-list">Another module list</h3>
|
||
<p>We also recommend these lists.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/EnlightenedPerlOrganisation/task-kensho"
|
||
title="Task::Kensho">Task::Kensho</a></li>
|
||
<li><a href="https://github.com/thibaultduponchelle/perlres">Perlres - A
|
||
list of resources about Perl</a></li>
|
||
<li><a
|
||
href="http://perlmaven.com/perl-based-open-source-products">PerlMaven.com
|
||
list of Perl Software</a></li>
|
||
<li><a
|
||
href="https://github.com/eserte/srezic-misc/blob/master/cpan_in_a_nutshell/cpan_in_a_nutshell.pod">Slaven’s
|
||
CPAN in a nutshell</a></li>
|
||
<li>Many Task::** Modules. (ex. Task::Plack,
|
||
Task::BeLike::<AuthorName>…)</li>
|
||
</ul>
|
||
<h3 id="contents">Contents</h3>
|
||
<ul>
|
||
<li><a href="#awesome-perl">Awesome Perl</a>
|
||
<ul>
|
||
<li><a href="#args">Args</a></li>
|
||
<li><a href="#audio">Audio</a>
|
||
<ul>
|
||
<li><a href="#DSP">Digital Signal Processing</a></li>
|
||
</ul></li>
|
||
<li><a href="#benchmarks">Benchmarks</a></li>
|
||
<li><a href="#caches">Caches</a></li>
|
||
<li><a href="#class-builder">Class Builder</a></li>
|
||
<li><a href="#cli">CLI</a></li>
|
||
<li><a href="#cloud">Cloud</a></li>
|
||
<li><a href="#cryptography">Cryptography</a></li>
|
||
<li><a href="#commercial-webservices">Commercial WebServices</a></li>
|
||
<li><a href="#container">Container</a></li>
|
||
<li><a href="#data-format">Data Format</a></li>
|
||
<li><a href="#database">Database</a></li>
|
||
<li><a href="#database-drivers">Database Drivers</a>
|
||
<ul>
|
||
<li><a href="#relational-databases">Relational Databases</a></li>
|
||
<li><a href="#nosql-databases">NoSQL Databases</a></li>
|
||
</ul></li>
|
||
<li><a href="#date--time">Date & Time</a></li>
|
||
<li><a href="#devices">Devices</a></li>
|
||
<li><a href="#devops-tools">DevOps</a></li>
|
||
<li><a href="#email">Email</a></li>
|
||
<li><a href="#event-loops">Event Loops</a></li>
|
||
<li><a href="#exception-handling">Exception Handling</a></li>
|
||
<li><a href="#dom-manipulation">DOM Manipulation</a></li>
|
||
<li><a href="#file-manipulation">File Manipulation</a></li>
|
||
<li><a href="#form-frameworks">Form Frameworks</a></li>
|
||
<li><a href="#images">Images</a></li>
|
||
<li><a href="#list-manipulation">List Manipulation</a></li>
|
||
<li><a href="#logging">Logging</a></li>
|
||
<li><a href="#module-development">Module Development</a></li>
|
||
<li><a href="#network">Network</a></li>
|
||
<li><a href="#orm">ORM</a></li>
|
||
<li><a href="#package-management">Package Management</a></li>
|
||
<li><a href="#processes-and-threads">Processes and Threads</a></li>
|
||
<li><a href="#profiling">Profiling</a></li>
|
||
<li><a href="#protocol">Protocol</a></li>
|
||
<li><a href="#queueing">Queueing</a></li>
|
||
<li><a href="#rest-frameworks">REST Frameworks</a></li>
|
||
<li><a href="#sciencenumerics">Science/Numerics</a></li>
|
||
<li><a href="#stream-manipulation">Stream Manipulation</a></li>
|
||
<li><a href="#template-engines">Template Engines</a></li>
|
||
<li><a href="#testing">Testing</a>
|
||
<ul>
|
||
<li><a href="#testing-frameworks">Testing Frameworks</a></li>
|
||
<li><a href="#test-double">Test Double</a></li>
|
||
<li><a href="#coverage">Coverage</a></li>
|
||
</ul></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#type-checking">Type Checking</a></li>
|
||
<li><a href="#video">Video</a></li>
|
||
<li><a href="#web-frameworks">Web Frameworks</a>
|
||
<ul>
|
||
<li><a href="#middlewares">Middlewares</a></li>
|
||
</ul></li>
|
||
<li><a href="#web-frameworks-like">Web Frameworks-Like</a></li>
|
||
<li><a href="#web-scraping">Web Scraping</a></li>
|
||
<li><a href="#Network-Security">Network Security</a></li>
|
||
<li><a href="#Metadata-Forensics">Digital Forensics</a></li>
|
||
<li><a href="#Reverse-Engineering">Reverse Engineering</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="args">Args</h2>
|
||
<p><em>Libraries for argument manifestation and validation.</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Data::Validator">Data::Validator</a> -
|
||
Rule based validator on type constraint system.</li>
|
||
<li><a href="https://metacpan.org/pod/Params::Util">Params::Util</a> -
|
||
Simple, compact and correct param-checking functions.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Params::ValidationCompiler">Params::ValidationCompiler</a>
|
||
- Validate method/function parameters.</li>
|
||
<li><a href="https://metacpan.org/pod/Smart::Args">Smart::Args</a></li>
|
||
</ul>
|
||
<h2 id="audio">Audio</h2>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Audio::CD">Audio::CD</a> -
|
||
Interface to libcdaudio (cd + cddb)</li>
|
||
<li><a href="https://metacpan.org/pod/Audio::Wav">Audio::Wav</a> -
|
||
Modules for reading & writing Microsoft WAV files.</li>
|
||
<li><a href="https://metacpan.org/pod/Audio::SndFile">Audio::SndFile</a>
|
||
- Perl library for reading and writing sound files</li>
|
||
<li><a href="https://metacpan.org/pod/Audio::Ao">Audio::Ao</a> - A Perl
|
||
wrapper for the Ao audio library</li>
|
||
<li><a href="https://metacpan.org/pod/MIDI::ALSA">MIDI::ALSA</a> - the
|
||
perl ALSA library, plus some interface functions</li>
|
||
</ul>
|
||
<h3 id="dsp">DSP</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Audio::Analyzer">Audio::Analyzer</a> -
|
||
Demodulate Audio through FFT and perl!</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Audio::Analyzer::ToneDetect">Audio::Analyzer::ToneDetect</a>
|
||
- Detect freq of tones in an audio file or stream</li>
|
||
</ul>
|
||
<h2 id="benchmarks">Benchmarks</h2>
|
||
<p><em>Libraries for benchmarking</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Benchmark">Benchmark</a></li>
|
||
<li><a href="https://metacpan.org/pod/Dumbbench">Dumbbench</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Parallel::Benchmark">Parallel::Benchmark</a>
|
||
- Benchmark in multiprocesses</li>
|
||
</ul>
|
||
<h2 id="caches">Caches</h2>
|
||
<p><em>Libraries to talk to Cache Softwares</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/CHI">CHI</a> - Unified cache
|
||
handling interface, think DBI for caches</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CHI::Driver::DBI">CHI::Driver::DBI</a> -
|
||
DBI driver for CHI</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CHI::Driver::DBIC">CHI::Driver::DBIC</a>
|
||
- DBIx::Class driver for CHI</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CHI::Driver::Memcached">CHI::Driver::Memcached</a>
|
||
- Memcached driver for CHI</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CHI::Driver::MongoDB">CHI::Driver::MongoDB</a>
|
||
- MongoDB driver for CHI</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CHI::Driver::Redis">CHI::Driver::Redis</a>
|
||
- Redis driver for CHI</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Catalyst::Plugin::Session::Store::CHI">Catalyst::Plugin::Session::Store::CHI</a>
|
||
- Use CHI module to handle storage backend for session data</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CGI::Application::Plugin::CHI">CGI::Application::Plugin::CHI</a>
|
||
- CGI-App plugin for CHI caching interface</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Mojolicious::Plugin::CHI">Mojolicious::Plugin::CHI</a>
|
||
- Interact with CHI caches</li>
|
||
</ul>
|
||
<h2 id="class-builder">Class Builder</h2>
|
||
<p><em>Libraries to support writing classes and meta
|
||
programming</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Class::Accessor::Lite">Class::Accessor::Lite</a>
|
||
- Simple accessor generator.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Class::Accessor::Lite::Lazy">Class::Accessor::Lite::Lazy</a>
|
||
- Generate lazy accessors.</li>
|
||
<li><a href="https://metacpan.org/pod/Homer">Homer</a> - Simple
|
||
Prototype-based object system.</li>
|
||
<li><a href="https://metacpan.org/pod/Mo">Mo</a> - Micro Objects. Mo is
|
||
less.</li>
|
||
<li><a href="https://metacpan.org/pod/Moo">Moo</a> - Class builder
|
||
supporting meta programming.</li>
|
||
<li><a href="https://metacpan.org/pod/Moose">Moose</a> - The one and
|
||
only, Moose.</li>
|
||
<li><a href="https://metacpan.org/pod/Mouse">Mouse</a> - Yet another
|
||
class builder like Moo/Moose.</li>
|
||
<li><a href="https://metacpan.org/pod/Object::Pad">Object::Pad</a> -
|
||
<code>class Example { has $x; method reader { return $x } }</code>,
|
||
experimental proving-ground for <a
|
||
href="https://gist.github.com/Ovid/68b33259cb81c01f9a51612c7a294ede">Cor</a></li>
|
||
<li><a href="https://metacpan.org/pod/Object::Tiny">Object::Tiny</a> - A
|
||
class builder that is terse, fast, and tiny.</li>
|
||
</ul>
|
||
<h2 id="cli">CLI</h2>
|
||
<p><em>Libraries for developing CLI applications</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/App::Cmd">App::Cmd</a> - Write
|
||
command line apps with less suffering.</li>
|
||
<li><a href="https://metacpan.org/pod/Getopt::Long">Getopt::Long</a> -
|
||
Extended processing of command line options.</li>
|
||
</ul>
|
||
<h2 id="cloud">Cloud</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/AWS::CloudFront">AWS::CloudFront</a> -
|
||
Lightweight interface to Amazon CloudFront CDN</li>
|
||
<li><a href="https://metacpan.org/pod/AWS::S3">AWS::S3</a> - Lightweight
|
||
interface to Amazon S3 (Simple Storage Service)</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::Amazon::EC2">Net::Amazon::EC2</a> -
|
||
Interface to the Amazon Elastic Compute Cloud (EC2) environment.</li>
|
||
<li><a href="https://metacpan.org/pod/Net::AWS::SES">Net::AWS::SES</a> -
|
||
Perl extension that implements Amazon Simple Email Service (SES)
|
||
client</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WebService::DigitalOcean">WebService::DigitalOcean</a>
|
||
- Access the DigitalOcean RESTful API (v2)</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WebService::Dropbox">WebService::Dropbox</a>
|
||
- Interface to Dropbox API</li>
|
||
</ul>
|
||
<h2 id="cryptography">Cryptography</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Bitcoin::Crypto">Bitcoin::Crypto</a> -
|
||
Bitcoin cryptography in Perl</li>
|
||
<li><a href="https://metacpan.org/pod/CryptX">CryptX</a> - Cryptographic
|
||
toolkit</li>
|
||
</ul>
|
||
<h2 id="commercial-webservices">Commercial WebServices</h2>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Net::Xero">Net::Xero</a> -
|
||
Interface to Xero accounting</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/PagerDuty::Agent">PagerDuty::Agent</a> -
|
||
A perl PagerDuty client</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WebService::Spotify">WebService::Spotify</a>
|
||
- A simple interface to the Spotify Web API</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WebService::Xero">WebService::Xero</a> -
|
||
Access Xero Accounting Package Public and Private Application API</li>
|
||
<li><a href="https://metacpan.org/pod/WWW::Shopify">WWW::Shopify</a> -
|
||
object representing acess to a particular Shopify store</li>
|
||
<li><a href="https://metacpan.org/pod/WWW::Spotify">WWW::Spotify</a> -
|
||
Spotify Web API Wrapper</li>
|
||
</ul>
|
||
<h2 id="container">Container</h2>
|
||
<p><em>Libraries for Singleton Pattern implementation.</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Object::Container">Object::Container</a></li>
|
||
</ul>
|
||
<h2 id="data-format">Data Format</h2>
|
||
<p><em>Libraries for serializing, formatting and parsing</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/BSON">BSON</a> - Binary JSON
|
||
format</li>
|
||
<li><a href="https://metacpan.org/pod/CBOR::Free">CBOR::Free</a> -
|
||
Support for (CBOR)[https://tools.ietf.org/html/rfc7049], IETF’s “binary
|
||
JSON”</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Data::Dumper::Simple">Data::Dumper::Simple</a>
|
||
- Reduce and faster Data::Dumper and eval() equivalent</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Data::MessagePack">Data::MessagePack</a></li>
|
||
<li><a href="https://metacpan.org/pod/JSON::PP">JSON::PP</a></li>
|
||
<li><a href="https://metacpan.org/pod/JSON::XS">JSON::XS</a></li>
|
||
<li><a href="https://metacpan.org/pod/Sereal">Sereal</a></li>
|
||
<li><a href="https://metacpan.org/pod/Storable">Storable</a></li>
|
||
<li><a href="https://metacpan.org/pod/Text::CSV">Text::CSV</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Text::CSV_XS">Text::CSV_XS</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Text::Markdown">Text::Markdown</a></li>
|
||
<li><a href="https://metacpan.org/pod/TOML">TOML</a></li>
|
||
<li><a href="https://metacpan.org/pod/XML::LibXML">XML::LibXML</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/XML::Compile::Schema">XML::Compile::Schema</a>
|
||
- Interpret schema elements and types: create processors for XML
|
||
messages.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/XML::Compile::SOAP">XML::Compile::SOAP</a>
|
||
- Implements the SOAP 1.1 protocol, client side.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/XML::Compile::WSDL">XML::Compile::WSDL</a>
|
||
- Use SOAP with a WSDL version 1.1 communication specification
|
||
file.</li>
|
||
<li><a href="https://metacpan.org/pod/YAML">YAML</a></li>
|
||
</ul>
|
||
<h2 id="database">Database</h2>
|
||
<p><em>Libraries for dealing with relational databases</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/DBI">DBI</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/DBIx::Connector">DBIx::Connector</a> -
|
||
Fast, safe DBI connection and transaction management</li>
|
||
<li><a href="https://metacpan.org/pod/DBIx::Handler">DBIx::Handler</a> -
|
||
Fork-safe DBI handler</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/DBIx::Inspector">DBIx::Inspector</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/DBIx::QueryLog">DBIx::QueryLog</a></li>
|
||
<li><a href="https://metacpan.org/pod/DBIx::Sunny">DBIx::Sunny</a> -
|
||
Useful DBI Wrapper</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/DBIx::TransactionManager">DBIx::TransactionManager</a></li>
|
||
</ul>
|
||
<h2 id="database-drivers">Database Drivers</h2>
|
||
<p><em>Libraries for using specific database products</em></p>
|
||
<h3 id="relational-databases">Relational Databases</h3>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/DBD::CSV">DBD::CSV</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/DBD::Firebird">DBD::Firebird</a></li>
|
||
<li><a href="https://metacpan.org/pod/DBD::MariaDB">DBD::MariaDB</a> -
|
||
MariaDB and MySQL driver for the Perl5 Database Interface (DBI)</li>
|
||
<li><a href="https://metacpan.org/pod/DBD::mysql">DBD::mysql</a></li>
|
||
<li><a href="https://metacpan.org/pod/DBD::ODBC">DBD::ODBC</a> - Any
|
||
ODBC Driver. MS-SQL w/ placeholders</li>
|
||
<li><a href="https://metacpan.org/pod/DBD::Oracle">DBD::Oracle</a> -
|
||
Oracle database driver for the DBI module</li>
|
||
<li><a href="https://metacpan.org/pod/DBD::Pg">DBD::Pg</a> - PostgreSQL
|
||
driver for DBI.</li>
|
||
<li><a href="https://metacpan.org/pod/DBD::SQLite">DBD::SQLite</a></li>
|
||
<li><a href="https://metacpan.org/pod/DBD::Sybase">DBD::Sybase</a> -
|
||
Sybase and MS-SQL. No placeholders w/ MS-SQL though</li>
|
||
</ul>
|
||
<h3 id="nosql-databases">NoSQL Databases</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Cache::Memcached::Fast">Cache::Memcached::Fast</a></li>
|
||
<li><a href="https://metacpan.org/pod/Mango">Mango</a> - Pure-Perl
|
||
non-blocking I/O MongoDB driver</li>
|
||
<li><a href="https://metacpan.org/pod/Redis">Redis</a></li>
|
||
<li><a href="https://metacpan.org/pod/Redis::Fast">Redis::Fast</a> -
|
||
Perl wrapper around hiredis driver</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Search::Elasticsearch">Search::Elasticsearch</a>
|
||
- Offical Elasticsearch client library</li>
|
||
<li><a href="https://metacpan.org/pod/UnQLite">UnQLite</a></li>
|
||
</ul>
|
||
<h2 id="date-time">Date & Time</h2>
|
||
<p><em>Libraries for working with dates and times</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/DateTime">DateTime</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Time::Moment">Time::Moment</a></li>
|
||
<li><a href="https://metacpan.org/pod/Time::Piece">Time::Piece</a></li>
|
||
</ul>
|
||
<h2 id="devices">Devices</h2>
|
||
<p><em>Libraries to talk to physical devices</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Device::SerialPort">Device::SerialPort</a>
|
||
- Generic Serial Port library for serial line communication</li>
|
||
<li><a href="https://metacpan.org/pod/Device::Modem">Device::Modem</a> -
|
||
Talk to modem devices conneted via serial port</li>
|
||
<li><a href="https://metacpan.org/pod/Device::Onkyo">Device::Onkyo</a> -
|
||
Control Onkyo/Integra AV equipment via LAN or Serial</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/distribution/pcsc-perl/Card/Card.pod">Chipcard::PCSC::Card</a>
|
||
- Control Smart card using perl and PCSC</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Device::XBee::API">Device::XBee::API</a>
|
||
- Control XBee Device using pure perl code</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Device::Firmata">Device::Firmata</a> -
|
||
module for controlling Firmata devices like Arduino</li>
|
||
</ul>
|
||
<h2 id="devops-tools">DevOps Tools</h2>
|
||
<p><em>Libraries that help when you want to deploy software across
|
||
networks on several hosts/are working across computer networks</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Rex">Rex</a> - Remote
|
||
Execution</li>
|
||
</ul>
|
||
<h2 id="email">Email</h2>
|
||
<p><em>Libraries that implement email creation and sending</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Email::Sender">Email::Sender</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Email::Reply">Email::Reply</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Email::Stuffer">Email::Stuffer</a></li>
|
||
</ul>
|
||
<h2 id="event-loops">Event Loops</h2>
|
||
<p><em>Libraries for various event loops. Asynchronous programming if
|
||
you like</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/AE">AE</a> - Simpler, faster,
|
||
newer AnyEvent API</li>
|
||
<li><a href="https://metacpan.org/pod/AnyEvent">AnyEvent</a> - the DBI
|
||
of event loop programming</li>
|
||
<li><a href="https://metacpan.org/pod/EV">EV</a> - Uses libev, very fast
|
||
and popular. Default for AnyEvent if present</li>
|
||
<li><a href="https://metacpan.org/pod/Event">Event</a> - Works well, but
|
||
older</li>
|
||
<li><a href="https://metacpan.org/pod/IO::Async">IO::Async</a> -
|
||
Asynchronous event-driven programming</li>
|
||
<li><a href="https://metacpan.org/pod/POE">POE</a> - Common interface
|
||
for several event loops</li>
|
||
<li><a href="https://metacpan.org/pod/Promise::XS">Promise::XS</a> -
|
||
Promises in Perl</li>
|
||
</ul>
|
||
<h2 id="exception-handling">Exception Handling</h2>
|
||
<p><em>Libraries that assist with and/or provide alternatives to eval{
|
||
die() }</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/autodie">autodie</a> - Replace
|
||
functions with ones that succeed or die with lexical scope</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Exception::Class">Exception::Class</a> -
|
||
A module that allows you to declare real exception classes in Perl</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Syntax::Keyword::Try">Syntax::Keyword::Try</a>
|
||
- a try/catch/finally syntax for perl</li>
|
||
<li><a href="https://metacpan.org/pod/Throwable">Throwable</a> - a role
|
||
for classes that can be thrown</li>
|
||
<li><a href="https://metacpan.org/pod/Try::Tiny">Try::Tiny</a> - minimal
|
||
try/catch with proper preservation of $@</li>
|
||
<li><a href="https://metacpan.org/pod/TryCatch">TryCatch</a> - first
|
||
class try catch semantics for Perl, without source filters</li>
|
||
</ul>
|
||
<h2 id="dom-manipulation">DOM Manipulation</h2>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/HTML5::DOM">HTML5::DOM</a> - Super
|
||
fast html5 DOM library with css selectors (based on Modest/MyHTML).</li>
|
||
</ul>
|
||
<h2 id="file-manipulation">File Manipulation</h2>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/File::Util">File::Util</a> - Easy,
|
||
versatile, portable file handling.</li>
|
||
<li><a href="https://metacpan.org/pod/Path::Tiny">Path::Tiny</a> -
|
||
Simple object-oriented file manipulation.</li>
|
||
</ul>
|
||
<h2 id="form-frameworks">Form Frameworks</h2>
|
||
<p><em>Libraries that take the boredom & repetition out of (web and
|
||
UI) forms</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Catalyst::Controller::HTML::FormFu">Catalyst::Controller::HTML::FormFu</a>
|
||
- Use HTML::FormFu in Catalyst.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/CGI::FormBuilder">CGI::FormBuilder</a> -
|
||
Easily generate and process stateful forms.</li>
|
||
<li><a href="https://metacpan.org/pod/Form::Sensible">Form::Sensible</a>
|
||
- A sensible way to handle form based user interface.</li>
|
||
<li><a href="https://metacpan.org/pod/Form::Tiny">Form::Tiny</a> - Forms
|
||
reusing Type::Tiny type constraints.</li>
|
||
<li><a href="https://metacpan.org/pod/Form::Toolkit">Form::Toolkit</a> -
|
||
A toolkit to build Data centric Forms.</li>
|
||
<li><a href="https://metacpan.org/pod/HTML::FormFu">HTML::FormFu</a> -
|
||
HTML Form Creation, Rendering and Validation Framework.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/HTML::FormFu::ExtJS">HTML::FormFu::ExtJS</a>
|
||
- ExtJS form generation from HTML::FormFu config files.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/HTML::FormHandler">HTML::FormHandler</a>
|
||
- HTML forms using Moose.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Mojolicious::Plugin::FormFields">Mojolicious::Plugin::FormFields</a>
|
||
- Lightweight, flexible form builder with validation and filtering.</li>
|
||
<li><a href="https://metacpan.org/pod/WWW::Form">WWW::Form</a> - Simple
|
||
and extendable module that allows developers to handle HTML form input
|
||
validation and display flexibly and consistently.</li>
|
||
</ul>
|
||
<h2 id="images">Images</h2>
|
||
<p><em>Libraries for manipulating images</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Image::Magick">Image::Magick</a> -
|
||
An object-oriented interface to ImageMagick’s image composing
|
||
libraries.</li>
|
||
<li><a href="https://metacpan.org/pod/Imager">Imager</a></li>
|
||
<li><a href="https://metacpan.org/pod/GD">GD</a> - Interface to Gd
|
||
Graphics Library</li>
|
||
<li><a href="https://metacpan.org/pod/Image::Info">Image::Info</a> - Get
|
||
image informations</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/release/BKB/Image-PNG-Libpng-0.52_03/lib/Image/PNG/Libpng.pm">Image::PNG::Libpng</a>
|
||
- Perl interface for libpng</li>
|
||
<li><a href="https://metacpan.org/pod/Graphics::TIFF">Graphics::TIFF</a>
|
||
- Perl wrapper for libtiff</li>
|
||
<li><a href="https://metacpan.org/pod/Image::BMP">Image::BMP</a> - Perl
|
||
bitmap image parser and viewer</li>
|
||
</ul>
|
||
<h2 id="list-manipulation">List Manipulation</h2>
|
||
<p><em>Libraries for manipulation lists (arrays)</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Array::Unique">Array::Unique</a> -
|
||
Tie-able array that allows only unique values</li>
|
||
<li><a href="https://metacpan.org/pod/List::AllUtils">List::AllUtils</a>
|
||
- Combines List::Util, List::SomeUtils and List::UtilsBy in one
|
||
bite-sized package</li>
|
||
<li><a href="https://metacpan.org/pod/List::Compare">List::Compare</a> -
|
||
Compare elements of two or more lists</li>
|
||
<li><a href="https://metacpan.org/pod/List::Gen">List::Gen</a> -
|
||
Provides functions for generating lists</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/List::MoreUtils">List::MoreUtils</a> -
|
||
Provide the stuff missing in List::Util</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/List::SomeUtils">List::SomeUtils</a> -
|
||
Provide the stuff missing in List::Util</li>
|
||
<li><a href="https://metacpan.org/pod/List::Util">List::Util</a> - A
|
||
selection of general-utility list subroutines</li>
|
||
<li><a href="https://metacpan.org/pod/List::UtilsBy">List::UtilsBy</a> -
|
||
higher-order list utility functions</li>
|
||
</ul>
|
||
<h2 id="logging">Logging</h2>
|
||
<p><em>Libraries for generating and working with log files</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Log::Dispatch">Log::Dispatch</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Log::Log4perl">Log::Log4perl</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Log::Minimal">Log::Minimal</a></li>
|
||
</ul>
|
||
<h2 id="module-development">Module Development</h2>
|
||
<p><em>Libraries that simplify and improve Perl module
|
||
development</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Dist::Zilla">Dist::Zilla</a> - <a
|
||
href="http://dzil.org/" class="uri">http://dzil.org/</a></li>
|
||
<li><a href="https://metacpan.org/pod/Minilla">Minilla</a> - CPAN module
|
||
authoring tool</li>
|
||
</ul>
|
||
<h2 id="network">Network</h2>
|
||
<p><em>Libraries that help when you are dealing with computer
|
||
networks</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/DOCSIS::ConfigFile">DOCSIS::ConfigFile</a>
|
||
- Decodes and encodes DOCSIS config files</li>
|
||
<li><a href="https://metacpan.org/pod/NetAddr::MAC">NetAddr::MAC</a> -
|
||
Handle MAC addresses</li>
|
||
</ul>
|
||
<p><em>Libraries that help when you are working across computer
|
||
networks</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Net::SSH::Perl">Net::SSH::Perl</a>
|
||
- SSH client implemented in Perl.</li>
|
||
<li><a href="https://metacpan.org/pod/Net::SSH2">Net::SSH2</a> - Wrapper
|
||
for <a href="https://libssh2.org/">libssh2</a>.</li>
|
||
<li><a href="https://metacpan.org/pod/Net::OpenSSH">Net::OpenSSH</a> -
|
||
Run commands remotely using the <a
|
||
href="http://www.openssh.com/">OpenSSH</a> client.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::OpenSSH::Parallel">Net::OpenSSH::Parallel</a>
|
||
- Run remote commands in parallel using the OpenSSH client.</li>
|
||
<li><a href="https://metacpan.org/pod/Net::SSH::Any">Net::SSH::Any</a> -
|
||
Run remote commands using any module or binary client available.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::SFTP::Foreign">Net::SFTP::Foreign</a>
|
||
- SFTP client for remote file access.</li>
|
||
<li><a href="https://metacpan.org/pod/Object::Remote">Object::Remote</a>
|
||
- Run Perl code on remote machines.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::CLI::Interact">Net::CLI::Interact</a>
|
||
- Automates interactive programs.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::Appliance::Session">Net::Appliance::Session</a>
|
||
- Automates interaction with appliances.</li>
|
||
</ul>
|
||
<h2 id="orm">ORM</h2>
|
||
<p><em>Libraries that implement Object-Relational Mapping or datamapping
|
||
techniques</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/DBIx::Class">DBIx::Class</a></li>
|
||
<li><a href="https://metacpan.org/pod/Rose::DB">Rose::DB</a></li>
|
||
<li><a href="https://metacpan.org/pod/Teng">Teng</a></li>
|
||
</ul>
|
||
<h2 id="package-management">Package Management</h2>
|
||
<p><em>Libraries for package and dependency management</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/App::cpanminus">App::cpanminus</a></li>
|
||
<li><a href="https://metacpan.org/pod/Carton">Carton</a></li>
|
||
<li><a href="https://metacpan.org/pod/Pinto">Pinto</a> - Powerful local
|
||
CPAN repos</li>
|
||
</ul>
|
||
<h2 id="processes-and-threads">Processes and Threads</h2>
|
||
<p><em>Libraries for managing processes and threads</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Parallel::ForkManager">Parallel::ForkManager</a>
|
||
- A simple parallel processing fork manager</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Parallel::Prefork">Parallel::Prefork</a>
|
||
- A simple prefork server framework</li>
|
||
<li><a href="https://metacpan.org/pod/Proclet">Proclet</a> -
|
||
Minimalistic supervisor, a Perl port of <a
|
||
href="https://github.com/ddollar/foreman">foreman</a></li>
|
||
</ul>
|
||
<h2 id="profiling">Profiling</h2>
|
||
<p><em>Libraries for examining run-time activity of your
|
||
program</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Devel::KYTProf">Devel::KYTProf</a>
|
||
- Very light profiler for I/Os such as HTTP request-responses and SQL
|
||
queries.</li>
|
||
<li><a href="https://metacpan.org/pod/Devel::NYTProf">Devel::NYTProf</a>
|
||
- Code profiler.</li>
|
||
</ul>
|
||
<h2 id="protocol">Protocol</h2>
|
||
<p><em>Protocol clients and libraries</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Furl">Furl</a> - Faster HTTP(S)
|
||
Client</li>
|
||
<li><a href="https://metacpan.org/pod/HTTP::Tiny">HTTP::Tiny</a> -
|
||
Minimal and fast client. Included in the standard packages.</li>
|
||
<li><a href="https://metacpan.org/pod/LWP::UserAgent">LWP::UserAgent</a>
|
||
- Popular HTTP(S) Client</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Curl">Net::Curl</a> -
|
||
(libcurl)[https://curl.se/libcurl/] integration</li>
|
||
<li><a href="https://metacpan.org/pod/Net::DHCP">Net::DHCP</a> - Send
|
||
and receive DHCP packets</li>
|
||
<li><a href="https://metacpan.org/pod/Net::DNS">Net::DNS</a> - Resolve
|
||
DNS host names</li>
|
||
<li><a href="https://metacpan.org/pod/Protocol::DBus">Protocol::DBus</a>
|
||
- D-Bus in (pure) Perl</li>
|
||
</ul>
|
||
<h2 id="queueing">Queueing</h2>
|
||
<p><em>Message Queue, Job Queue System..</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Gearman">Gearman</a></li>
|
||
<li><a href="https://docs.mojolicious.org/Minion">Minion</a> - Pure-Perl
|
||
job queue</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::RabbitMQ">Net::RabbitMQ</a></li>
|
||
<li><a href="https://metacpan.org/pod/Net::Stomp">Net::Stomp</a></li>
|
||
<li><a href="https://metacpan.org/pod/Qudo">Qudo</a></li>
|
||
<li><a href="https://metacpan.org/pod/Resque">Resque</a></li>
|
||
<li><a href="https://metacpan.org/pod/TheSchwartz">TheSchwartz</a></li>
|
||
</ul>
|
||
<h2 id="sciencenumerics">Science/Numerics</h2>
|
||
<p><em>Hand-picked modules for research, science, numerics and
|
||
hyper-computing</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/BioPerl">BioPerl</a></li>
|
||
<li><a href="https://metacpan.org/pod/Chart::Clicker">Chart::Clicker</a>
|
||
- Powerful, extensible charting</li>
|
||
<li><a href="http://pdl.perl.org/">PDL</a></li>
|
||
<li><a href="https://metacpan.org/pod/PDL">PDL (CPAN)</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/PDL::Graphics::Gnuplot">PDL::Graphics::Gnuplot</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/search?q=PDL%3A%3AIO&size=20">PDL::IO::*</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/PDL::LinearAlgebra">PDL::LinearAlgebra</a></li>
|
||
<li><a href="https://metacpan.org/pod/PDL::Stats">PDL::Stats</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/search?q=physics%3A%3A&size=20">Physics::*</a></li>
|
||
</ul>
|
||
<h2 id="stream-manipulation">Stream Manipulation</h2>
|
||
<p><em>Libraries for manipulating event streams</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/RxPerl">RxPerl</a> - Perl
|
||
implementation of <a href="http://reactivex.io">Reactive Extensions</a>
|
||
/ rxjs</li>
|
||
</ul>
|
||
<h2 id="rest-frameworks">REST Frameworks</h2>
|
||
<p><em>Libraries for developing REST applications</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Catalyst::Action::REST">Catalyst::Action::REST</a>
|
||
- Automated REST Method Dispatching</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Dancer2::Plugin::REST">Dancer2::Plugin::REST</a>
|
||
- A plugin for writing RESTful apps with Dancer2</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Dancer::Plugin::REST">Dancer::Plugin::REST</a>
|
||
- A plugin for writing RESTful apps with Dancer</li>
|
||
<li><a href="https://metacpan.org/pod/Raisin">Raisin</a> - a REST API
|
||
micro framework for Perl</li>
|
||
<li><a href="https://metacpan.org/pod/Squatting">Squatting</a> - A
|
||
Camping-inspired Web Microframework for Perl</li>
|
||
</ul>
|
||
<h2 id="template-engines">Template Engines</h2>
|
||
<p><em>Libraries and tools for templating</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/HTML::Template">HTML::Template</a>
|
||
- Templates for web pages</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Template::Alloy">Template::Alloy</a> -
|
||
TT2/3, HT, HTE, Tmpl, and Velocity Engine</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Template::Toolkit">Template::Toolkit</a>
|
||
- Very Popular Template Processing System</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Text::MicroTemplate">Text::MicroTemplate</a>
|
||
- Fast, simple and safe template engine written in pure-Perl and core
|
||
modules.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Text::MicroTemplate::Extended">Text::MicroTemplate::Extended</a>
|
||
- Extended Text::MicroTemplate.</li>
|
||
<li><a href="https://metacpan.org/pod/Text::Template">Text::Template</a>
|
||
- Templates with embedded perl</li>
|
||
<li><a href="https://metacpan.org/pod/Text::Xslate">Text::Xslate</a> -
|
||
Faster template engine with XS. Supports multiple syntaxes.</li>
|
||
<li><a href="https://metacpan.org/pod/Tiffany">Tiffany</a> - Generic
|
||
interface for template engines. It makes it easy to use multiple
|
||
template engines.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Template::Magic">Template::Magic</a> -
|
||
Magic merger of runtime values with templates.</li>
|
||
</ul>
|
||
<h2 id="testing">Testing</h2>
|
||
<p><em>Libraries for testing codebases and generating test
|
||
data.</em></p>
|
||
<h3 id="testing-frameworks">Testing Frameworks</h3>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Test::Base">Test::Base</a> - A
|
||
Data Driven Testing Framework</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::Base::Less">Test::Base::Less</a> -
|
||
Limited version of Test::Base</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::BDD::Cucumber">Test::BDD::Cucumber</a>
|
||
- Implementation of the popular Cucumber framework in Perl</li>
|
||
<li><a href="https://metacpan.org/pod/Test::Class">Test::Class</a> -
|
||
Class-based testing. Support “setup” and “teardown”.</li>
|
||
<li><a href="https://metacpan.org/pod/Test::Deep">Test::Deep</a> - Test
|
||
deep and complex data structures with great flexibility.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::Deep::Matcher">Test::Deep::Matcher</a></li>
|
||
<li><a href="https://metacpan.org/pod/Test::Harness">Test::Harness</a> -
|
||
Run Perl standard test scripts with statistics</li>
|
||
<li><a href="https://metacpan.org/pod/Test::Kantan">Test::Kantan</a> -
|
||
simple, flexible, fun “Testing framework”</li>
|
||
<li><a href="https://metacpan.org/pod/Test::More">Test::More</a></li>
|
||
</ul>
|
||
<h3 id="test-double">Test Double</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::Exception">Test::Exception</a></li>
|
||
<li><a href="https://metacpan.org/pod/Test::Fatal">Test::Fatal</a> -
|
||
Simple module for verifying exceptions.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::Mock::Guard">Test::Mock::Guard</a>
|
||
- Mocking package subroutines.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::MockTime">Test::MockTime</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Test::mysqld">Test::mysqld</a></li>
|
||
<li><a href="https://metacpan.org/pod/Test::TCP">Test::TCP</a> - Launch
|
||
temporary TCP Server</li>
|
||
<li><a href="https://metacpan.org/pod/Test::Time">Test::Time</a> -
|
||
Simple module for faking system time.</li>
|
||
</ul>
|
||
<h3 id="coverage">Coverage</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Devel::Cover">Devel::Cover</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Devel::Cover::Report::Coveralls">Devel::Cover::Report::Coveralls</a>
|
||
Report to Coveralls</li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<p><em>Some useful tools</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/App::Ack">App::Ack</a> - ack is a
|
||
tool like grep, optimized for programmers.</li>
|
||
<li><a href="https://metacpan.org/pod/App::Nopaste">App::Nopaste</a> -
|
||
Post to various pastebins from the CLI</li>
|
||
<li><a href="https://metacpan.org/pod/Daiku">Daiku</a> - Make for
|
||
Perl.</li>
|
||
<li><a href="https://metacpan.org/pod/Data::Printer">Data::Printer</a> -
|
||
Colored pretty-print of Perl data structures and objects.</li>
|
||
<li><a href="https://metacpan.org/pod/Reply">Reply</a> -
|
||
Read-eval-print-loop(REPL) command-line tool.</li>
|
||
<li><a href="https://metacpan.org/pod/Riji">Riji</a> - Static site
|
||
generator using markdown and git mainly for blogging.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Smart::Comments">Smart::Comments</a> -
|
||
Comments that do more than just sit there.</li>
|
||
</ul>
|
||
<p><em>Libraries for developping command line applications</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Toolbox::Simple">Toolbox::Simple</a> -
|
||
Simplfy some common tasks in Perl.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Script::Toolbox">Script::Toolbox</a> -
|
||
Framework for the daily business scripts.</li>
|
||
<li><a href="https://metacpan.org/pod/Devel::Kit">Devel::Kit</a>- Handy
|
||
toolbox of things to ease development/debugging.</li>
|
||
</ul>
|
||
<p><em>Libraries for handling configuration files</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Config::Tiny">Config::Tiny</a> -
|
||
Read/Write .ini style files with as little code as possible</li>
|
||
</ul>
|
||
<h2 id="type-checking">Type checking</h2>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/MooseX::Types">MooseX::Types</a> -
|
||
Moose types management tool</li>
|
||
<li><a href="https://metacpan.org/pod/Type::Tiny">Type::Tiny</a> - Tiny,
|
||
yet comprehensive type library</li>
|
||
</ul>
|
||
<h2 id="video">Video</h2>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/FFmpeg">FFmpeg</a> - Interface to
|
||
FFmpeg, a video converter written in C</li>
|
||
<li><a href="https://metacpan.org/pod/Video::Info">Video::Info</a> -
|
||
Retrieve video properties such as: height width codec fps</li>
|
||
<li><a href="https://metacpan.org/pod/Vlc::Engine">Vlc::Engine</a> - use
|
||
Vlc media player with Perl</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/VideoLAN::LibVLC">VideoLAN::LibVLC</a> -
|
||
Perl bindings for libvlc.so</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Video::Generator">Video::Generator</a> -
|
||
Perl class for video generation</li>
|
||
</ul>
|
||
<h2 id="web-frameworks">Web Frameworks</h2>
|
||
<p><em>Libraries for developing Web applications</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Amon2">Amon2</a></li>
|
||
<li><a href="https://metacpan.org/pod/Catalyst">Catalyst</a> -
|
||
Overflowing with features. Very popular.</li>
|
||
<li><a href="https://metacpan.org/pod/Dancer">Dancer</a> (<a
|
||
href="http://perldancer.org/">Official site</a>)</li>
|
||
<li><a href="https://metacpan.org/pod/Dancer2">Dancer2</a></li>
|
||
<li><a href="https://metacpan.org/pod/Gantry">Gantry</a> - Web
|
||
application framework for mod_perl, cgi, etc.</li>
|
||
<li><a href="https://metacpan.org/pod/Kelp">Kelp</a> - Plack-focused
|
||
Perl web framework</li>
|
||
<li><a href="https://metacpan.org/pod/Kossy">Kossy</a> - A Web framework
|
||
with simple interface.</li>
|
||
<li><a href="https://metacpan.org/pod/Mojolicious">Mojolicious</a> - An
|
||
all in one framework.</li>
|
||
<li><a href="https://metacpan.org/pod/Poet">Poet</a> - a modern Perl web
|
||
framework for Mason developers</li>
|
||
</ul>
|
||
<h3 id="middlewares">Middlewares</h3>
|
||
<p><em>Libraries for creating HTTP middlewares</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Gazelle">Gazelle</a> - Preforked
|
||
Plack Handler for performance freaks</li>
|
||
<li><a href="https://metacpan.org/pod/Plack">Plack</a> - PSGI server
|
||
implementation and utilities for Web applications.</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Server::Starter">Server::Starter</a> -
|
||
Process manager with the “graceful restart” feature.</li>
|
||
<li><a href="https://metacpan.org/pod/Starlet">Starlet</a> -
|
||
High-performance PSGI Server</li>
|
||
<li><a href="https://metacpan.org/pod/Starman">Starman</a> -
|
||
High-performance preforking PSGI/Plack web server</li>
|
||
<li><a href="https://metacpan.org/pod/Twiggy">Twiggy</a> - Event-driven
|
||
PSGI application server</li>
|
||
</ul>
|
||
<h2 id="web-frameworks-like">Web Frameworks-Like</h2>
|
||
<p><em>Somewhere between templates and full on frameworks</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Embperl">Embperl</a> - Building
|
||
dynamic Websites with Perl (sort of like Perl crossed with PHP)</li>
|
||
<li><a href="https://metacpan.org/pod/Mason">Mason</a> - Powerful,
|
||
high-performance templating for the web and beyond</li>
|
||
</ul>
|
||
<h2 id="web-scraping">Web Scraping</h2>
|
||
<p><em>Libraries for extracting some information from websites</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Web::Scraper">Web::Scraper</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WWW::Mechanize">WWW::Mechanize</a></li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WWW::Mechanize::PhantomJS">WWW::Mechanize::PhantomJS</a>
|
||
- automate the PhantomJS browser</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/distribution/WWW-Scripter/lib/WWW/Scripter.pod">WWW::Scripter</a>
|
||
- For scripting web sites that have scripts</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/WWW::Selenium">WWW::Selenium</a></li>
|
||
</ul>
|
||
<h2 id="network-security">Network Security</h2>
|
||
<p><em>Some great libraries for starting the world of Network security
|
||
with Perl</em></p>
|
||
<ul>
|
||
<li><a href="https://metacpan.org/pod/Net::Pcap">Net::Pcap</a> -
|
||
Interface to the pcap LBL packet capture library</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Ncap">Net::Ncap</a> - Perl
|
||
binding to the ncap network data capture library</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Frame">Net::Frame</a> - Perl
|
||
framework for frame crafting</li>
|
||
<li><a href="https://metacpan.org/pod/NetPacket">NetPacket</a> -
|
||
assemble/disassemble network packets at the protocol level</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Write">Net::Write</a> -
|
||
portable interface to open and send raw data to network</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Analysis">Net::Analysis</a> -
|
||
Perl library for analysing network traffic</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Silk">Net::Silk</a> - Perl’s
|
||
Interface to the SiLK network flow library</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Inspect">Net::Inspect</a> -
|
||
Perl library for inspection of data on various network layers</li>
|
||
<li><a href="https://metacpan.org/pod/Net::Tshark">Net::Tshark</a> -
|
||
Perl interface for Tshark network capture utility</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::Sharktools">Net::Sharktools</a> -
|
||
Wireshark’s packet inspection capabilities in Perl</li>
|
||
<li><a href="https://metacpan.org/pod/File::PCAP">File::PCAP</a> - Read,
|
||
Write and manipulate PCAP file format through Perl</li>
|
||
<li><a href="https://metacpan.org/pod/Net::P0f">Net::P0f</a> - Perl
|
||
interface to p0f utility, usefull for finger-printing os</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::Pcap::Reassemble">Net::Pcap::Reassemble</a>
|
||
- Perl IP fragment reassembly for Net::Pcap</li>
|
||
<li><a href="https://metacpan.org/pod/Nagios::NRPE">Nagios::NRPE</a> -
|
||
Pure perl Nagios NRPE implementation</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Monitoring::Plugin">Monitoring::Plugin</a>
|
||
- A family of perl modules to streamline writing Naemon, Nagios, Icinga
|
||
or Shinken (and compatible) plugins</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::Connection::Sniffer">Net::Connection::Sniffer</a>
|
||
- practical Perl library for MiTM connections</li>
|
||
<li><a href="https://metacpan.org/pod/Net::ARP">Net::ARP</a> - Library
|
||
for crafting ARP packets</li>
|
||
<li><a href="https://metacpan.org/pod/SNMPMonitor">SNMPMonitor</a> -
|
||
Perl extension for writing SNMP Monitors</li>
|
||
<li><a href="https://metacpan.org/pod/Net::LibNIDS">Net::LibNIDS</a> -
|
||
Perl interface for the Network Intrusion Detection System library</li>
|
||
<li><a href="https://metacpan.org/pod/Parse::Snort">Parse::Snort</a> -
|
||
Perl Snort rules parser</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Net::Wireless::802_11::WPA::CLI">Net::Wireless::802_11::WPA::CLI</a>
|
||
- Perl WPA_CLI interface</li>
|
||
<li><a
|
||
href="https://metacpan.org/IO::Socket::SSL::Intercept">IO::Socket::SSL::Intercept</a>
|
||
- library for intercepting SSL connections through Perl</li>
|
||
</ul>
|
||
<h2 id="metadata-forensics">Metadata Forensics</h2>
|
||
<p><em>General Metadata files parser, usefull during forensics
|
||
investigations</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/distribution/Image-ExifTool/exiftool">Image::ExifTool</a>
|
||
- General metadata parser and viewer framework</li>
|
||
</ul>
|
||
<h2 id="reverse-engineering">Reverse Engineering</h2>
|
||
<p><em>Libraries used for disassembly assembly operations, ELF files and
|
||
bytecode</em></p>
|
||
<ul>
|
||
<li><a
|
||
href="https://metacpan.org/pod/distribution/B-C/script/disassemble">Disassembly</a>
|
||
- Decompiles binary bytecode to readable and recompilable bytecode
|
||
assembler</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Python::Bytecode">Python::Bytecode</a> -
|
||
Parse Python bytecode</li>
|
||
<li><a href="https://metacpan.org/pod/B::Bytecode">B::Bytecode</a> -
|
||
Compiles a Perl script into a bytecode format that could be loaded
|
||
later</li>
|
||
<li><a href="https://metacpan.org/pod/Perf::ARM">Perf::ARM</a> - Use ARM
|
||
instructions in Perl</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Asm::Z80::Table">Asm::Z80::Table</a> -
|
||
assemble / disassemble all Z80 CPU assembly instructions with Perl</li>
|
||
<li><a href="https://metacpan.org/pod/X86::Disasm">X86::Disasm</a> -
|
||
Disassemble Intel x86 instructions with Perl</li>
|
||
<li><a
|
||
href="https://metacpan.org/pod/Disassemble::X86">Disassemble::X86</a> -
|
||
Another library for disassembe X86 instructions</li>
|
||
<li><a href="https://metacpan.org/pod/X86::Udis86">X86::Udis86</a> -
|
||
Interface for the C Udis disassembler</li>
|
||
<li><a href="https://metacpan.org/pod/Asm::X86">Asm::X86</a> - List of
|
||
instructions and registers of x86-compatible processors, validating and
|
||
converting instructions and memory references</li>
|
||
<li><a href="https://metacpan.org/pod/ELF::Writer">ELF::Writer</a> -
|
||
write and read executable ELF files</li>
|
||
</ul>
|
||
<h1 id="other-awesome-lists">Other Awesome Lists</h1>
|
||
<p>Other amazingly awesome lists can be found in:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/bayandin/awesome-awesomeness">bayandin/awesome-awesomeness</a></li>
|
||
<li><a
|
||
href="https://github.com/emijrp/awesome-awesome">emijrp/awesome-awesome</a></li>
|
||
<li><a
|
||
href="https://github.com/fleveque/awesome-awesomes">fleveque/awesome-awesomes</a></li>
|
||
<li><a
|
||
href="https://github.com/sindresorhus/awesome">sindresorhus/awesome</a></li>
|
||
<li><a
|
||
href="https://github.com/t3chnoboy/awesome-awesome-awesome">t3chnoboy/awesome-awesome-awesome</a></li>
|
||
</ul>
|
||
<h1 id="how-to-contribute">How to contribute?</h1>
|
||
<p>Please read <a href="CONTRIBUTING.md">CONTRIBUTING.md</a></p>
|