Some interesting modules xreffed by their subject matter

These have been extracted from my Perl Tiddlywiki

Ron Savage


Part 1: Topics
Part 2: Notes per topic
Part 3: Modules mentioned

Part 1: Topics

A CRUD renderer for RoseA neater Data::DumperAccess to MetaCPAN
Application InfoArchivesAudio
Augmenting DBIx::ClassCGI + PlackCGI Searching
CGI and Intruder Detection SystemCGI params with multiple valuesCPAN Changes file
CPAN Tester resultsCSRFCallbacks
CarpClass hierarchiesClever chdir
Command line GUICompressionConfig file readers
ConstantsConvert CPAN module into Debian packageCurl/Furl/Wget
DFA/FSMDaemonizeData flow processor
DateTimeDebian See DebianLicenceDelegation aka Roles
DependenciesDeprecationDesktop
Desktop:NotifyDiffsEBooks
EventsExceptionsExport from MS Word to text as a pre-commit git hook
File fetchingFile slurpingFile/Dir manipulation
ForkingGPGGit
Google's APIsHTML EncodingHTML Parsing
HTML to PDFHTTPI18N, Encoding, UTF8, Unicode
Job queueingLicence See DebianLicenceLoad a module at run-time
MailMail testingManaging servers
Messages and messagingModulesMultiple Perls
Name parsing and normalizationNew type of quoting, instead of @{[xxx]}One of many path routers
PDFsParameter checkingParsing User-Agent string
Password generationPerl's @INCPod processing
Pre-req (prereq) checkersProcesses and open filesQueues
Quoting in PerlREST processorRead address books
Replacement for ref()Reverse proxyRoles
SSHSVGScanning dirs
Session managementSet operationsShowing data
Singular/PluralSpellingSpreadsheets
String <-> ID mappingSystem infoTables as in database tables, spreadsheets, CSV/TSV files, HTML tables, etc
TestingTextTry/Catch
UUIDsUnicodeUsers and passwords for web apps
ValidationVersion of moduleVi: Manipulating vi remotely via a Back Channel
WindowsWrap any search engineXML
cpanmmversionmwhere

Part 1: Topics
Part 3: Modules mentioned

Part 2: Notes per topic

A CRUD renderer for Rose

Rose::DBx::Object::Renderer

A neater Data::Dumper

Data::Dumper::Concise

Access to MetaCPAN

App::metacpansearch

Application Info

App::Info

Archives

Archive::Extract::Libarchive

Audio

Audio::TagLib

Augmenting DBIx::Class

DBIx::DataModel

CGI + Plack

Plack::App::CGIBin
Plack::App::WrapCGI

CGI Searching

CGI::Application::Search

CGI and Intruder Detection System

CGI::IDS

CGI params with multiple values

Hash::MultiValue

CPAN Changes file

CPAN::Changes ships with
CPAN::Changes::Spec

CPAN Tester results

CPAN::Testers::WWW::Reports::Query

CSRF

CGI::Application::Plugin::ProtectCSRF
Plack::Middleware::CSRFBlock

Callbacks

Params::CallbackRequest

Carp

Carp::Always
Devel::SimpleTrace

Class hierarchies

Plotting:
Class::Sniff
GraphViz2::Parse::ISA
GraphViz::ISA::Multi

Clever chdir

File::chdir
File::chdir::WalkDir
To execute some code in each dir

Command line GUI

Term::Clui

Compression

Compress::Snappy

Config file readers

Config::IniFiles
Config::INIPlus

Constants

Const::Fast
Not Readonly

Convert CPAN module into Debian package

DhMakePerl

Curl/Furl/Wget

curl
Furl is Perl
wget

DFA/FSM

DFA::Simple
Set::FA
Ragel: http://www.complang.org/ragel/
SMC: http://smc.sourceforge.net/
Not DFA::Kleene
Not DFA::Statemap
Not DMA::FSM
Not FLAT
Not IDS::Algorithm::DFA
Not MooseX::FSM
Not Parse::FSM
Not Shishi

Daemonize

See also Server::Control below
MooseX::Daemonize, MooseX::Runnable
http://executionexception.wordpress.com/2010/06/18/moosexdaemonize-and-init-d/
See also:
Proc::Daemon, Daemon::Generic
See also ubic:
http://beta.metacpan.org/module/Ubic::Manual::Overview
http://blogs.perl.org/users/vyacheslav_matjukhin/2010/08/ubic---code-reuse-and-customizations.html

Data flow processor

DataFlow

DateTime

DateTimeX::Lite

Debian See DebianLicence


Delegation aka Roles

See Roles below

Dependencies

See also 'Pre-req (prereq) checkers' below for Perl module dependencies
Algorithm::Dependency
https://metacpan.org/module/carton
https://metacpan.org/module/perlrocks

Deprecation

Package::DeprecationManager

Desktop

File::HomeDir::PathClass
It has my_home() -> children returning an array.

Desktop:Notify

Uses Net::DBus

Diffs

Text::WordDiff

EBooks

perlybook.org
EBook::MOBI
EPublisher
See also Pod::*

Events

Object::Event
Reflex
IO::Async

Exceptions

Exception::Class has too much overhead
Throwable

Export from MS Word to text as a pre-commit git hook

http://gist.github.com/567045

File fetching

File::Fetch
Se above, curl etc

File slurping

File::Slurp
read_file() does not chomp

File/Dir manipulation

File::Path::Tiny

Forking

Child
forks
Forks::Super
Proc::Simple
Many others

GPG

See gpg

Git

Git::Repository
Git::Wrapper
App::gh emulates apt-get for github sort of

Google's APIs

Visualization: Data::Google::Visualization::DataTable

HTML Encoding

IO::HTML

HTML Parsing

pQuery
HTML::Restrict
HTML::Query
Marpa::HTML
Very clever
HTML::TreeBuilder
which in turn uses HTML::Element
which in turn provides look_down()
HTML::Scrubber
HTML::CruftText

HTML to PDF

http://code.google.com/p/wkhtmltopdf/

HTTP

HTTP::Tiny

I18N, Encoding, UTF8, Unicode

Encode::Encoder
use Encode::Encoder qw(encoder);
use Encode::Base64;
my $encoded = encoder($unencoded)->base64;
my $decoded = encoder($encoded)->utf8('base64');
Warning: Return values are objects, so:
$actual_string = qq<@{[encoder($unencoded)->base64]}>;
See FF bookmarks/I18N
Encode::Guess
Text::GuessEncoding
File::BOM
Locale::MakeText
Locale::TextDomain (wraps Locale::MakeText)
Locale::Messages (sometimes broken)
Locale::Maketext::Lexicon (sometimes broken)
http://blogs.perl.org/users/aristotle/2011/04/stop-using-maketext.html
and
Unicode, especially for sorting:
Unicode::Collate
Unicode::Collate::Locale
http://www.perl.com/pub/2011/08/whats-wrong-with-sort-and-how-to-fix-it.html

Job queueing

Beanstalk::Client and http://kr.github.com/beanstalkd/
Hopkins
https://metacpan.org/module/TheSchwartz
https://metacpan.org/module/Helios
Gearmand
Parallel::Workers
Thread::Workers
Thread::Pool
Thread::Apartment
ZeroMQ

Licence See DebianLicence


Load a module at run-time

Module::UseFrom
Class::Load
Module::Load

Mail

Courriel by Dave Rolsky

Mail testing

swaks
http://jetmore.org/john/code/swaks/

Managing servers

Server::Control

Messages and messaging

Growl::GNTP
DBD::Pg
Notify
Job::Machine
Message::Passing (uses ZeroMQ)
ZeroMQ
Net::RabbitMQ
IPC::DirQueue

Modules

App::moduleswhere
mwhere
Module::Path has a big See Also list

Multiple Perls

App::perlbrew

Name parsing and normalization

Text::Names

New type of quoting, instead of @{[xxx]}

Quote::Code

One of many path routers

Router::Simple

PDFs

CAM::PDF
http://damien.krotkine.com/the-player-of-games/
http://www.pdfsam.org

Parameter checking

Params::Util

Parsing User-Agent string

http://blogs.perl.org/users/neilb/2011/10/cpan-modules-for-parsing-user-agent-strings.html

Password generation

App::Genpass

Perl's @INC

inc::latest to get the latest of N installed versions

Pod processing

Pod::Inherit

Pre-req (prereq) checkers

Module::Used, App::pmcheck, pmcheck
Perl::PrereqScanner
Module::Depends::Intrusive
CPAN::FindDependencies
App::mymeta_requires scans MYMETA.*
Dist::Requires
Devel::TraceUse tells which modules use which modules

Processes and open files

Unix::Lsof

Queues

Job::Machine (above)

Quoting in Perl

Quote::Reference gives qwr for [] and qhr for {}

REST processor

Net::HTTP::Spore

Read address books

Net::LDAP::LDIF

Replacement for ref()

Scalar::Does

Reverse proxy

Starlet (Perl module)

Roles

Role::Tiny
AutoRole
Role::Basic
Class::Method::Delegate

SSH

Multi-host access:
https://metacpan.org/module/helm
http://rexify.org/
https://metacpan.org/module/Tak

SVG

SVG::Sparklines

Scanning dirs

Path::Class::Rule

Session management

Session::Token

Set operations

Good ones:
Array::AsObject; Supports duplicates
Set::Array; Supports duplicates
Set::Bag; Multisets, in that bags are named: (apples => 3, mangos => 5)
Set::Object; No duplicates
Set::Scalar
Ignorable ones:
Array::Compare
Array::Uniq
Array::Utils
EO::Array
Object::Array

Showing data

Data::Show
Data::Dump
Data::Dumper
Data::Dumper::Names

Singular/Plural

Lingua::EN::PluralToSingular

Spelling

Text::Hunspell

Spreadsheets

Excel::Writer::XLSX

String <-> ID mapping

Text::String

System info

App::Sys::Info

Tables as in database tables, spreadsheets, CSV/TSV files, HTML tables, etc

Data::Table

Testing

Test::Class
Test::Fatal
Test::Routine
Pegex - Perl module
TextML - http://www.testml.org/specification/language/

Text

Text::MultiMarkdown

Try/Catch

Try::Tiny
Try::Tiny::SmartCatch

UUIDs

Data::UUID::MT

Unicode

App::Uni
File::BOM
http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html
Unicode::CaseFold
Unicode::Collate[::Locale] for sort()
Unicode::GCString
Unicode::LineBreak
Unicode::Tussle
Unicode::UCD
Unicode::Util
IO::HTML - Open an HTML file with automatic charset detection

Users and passwords for web apps

Abilities
Entities
Class::User::DBI

Validation

Brannigan
Form::Processor

Version of module

Module::Version
mversion
Module::CoreList
What version ship with each Perl

Vi: Manipulating vi remotely via a Back Channel

App::BCVI

Windows

Win32::Job

Wrap any search engine

Data::SearchEngine?

XML

XML::Rules
XML::Rabbit
XML::Simple
XML::TreePuller

cpanm

App::cpanminus
App::cpanoutdated

mversion

Module::Version - Great utility

mwhere

App::moduleswhere - Great utility

Part 1: Topics
Part 2: Notes per topic

Part 3: Modules mentioned

DFA::Kleene DFA::Statemap DMA::FSM Data::Google::Visualization::DataTable Encode::Base64 Encode::Encoder
HTML::Element IDS::Algorithm::DFA MooseX::FSM Net::DBus Parse::FSM Server::Control
AbilitiesAlgorithm::DependencyApp::BCVIApp::GenpassApp::InfoApp::Sys::Info
App::UniApp::cpanminusApp::cpanoutdatedApp::ghApp::metacpansearchApp::moduleswhere
App::mymetaApp::perlbrewArchive::Extract::LibarchiveArray::AsObjectArray::CompareArray::Uniq
Array::UtilsAudio::TagLibAutoRoleBeanstalk::ClientBranniganCAM::PDF
CGI::Application::Plugin::ProtectCSRFCGI::Application::SearchCGI::IDSCPAN::ChangesCPAN::Changes::SpecCPAN::FindDependencies
CPAN::Testers::WWW::Reports::QueryCarp::AlwaysClass::LoadClass::Method::DelegateClass::SniffClass::User::DBI
Compress::SnappyConfig::INIPlusConfig::IniFilesConst::FastDBD::PgDBIx::DataModel
DFA::SimpleData::DumpData::DumperData::Dumper::ConciseData::Dumper::NamesData::SearchEngine
Data::ShowData::TableData::UUID::MTDataFlowDateTimeX::LiteDevel::SimpleTrace
Devel::TraceUseDhMakePerlDist::RequiresEBook::MOBIEO::ArrayEPublisher
Encode::EncoderEncode::GuessEntitiesExcel::Writer::XLSXException::ClassFLAT
File::BOMFile::FetchFile::HomeDir::PathClassFile::Path::TinyFile::SlurpFile::chdir
File::chdir::WalkDirForks::SuperForm::ProcessorGearmandGit::RepositoryGit::Wrapper
GraphViz2::Parse::ISAGraphViz::ISA::MultiGrowl::GNTPHTML::CruftTextHTML::QueryHTML::Restrict
HTML::ScrubberHTML::TreeBuilderHTTP::TinyHash::MultiValueIO::AsyncIO::HTML
IPC::DirQueueJob::MachineLingua::EN::PluralToSingularLocale::MakeTextLocale::Maketext::LexiconLocale::Messages
Locale::TextDomainMarpa::HTMLMessage::PassingModule::CoreListModule::Depends::IntrusiveModule::Load
Module::PathModule::UseFromModule::UsedModule::VersionMooseX::DaemonizeNet::HTTP::Spore
Net::LDAP::LDIFNet::RabbitMQNotifyObject::ArrayObject::EventPackage::DeprecationManager
Parallel::WorkersParams::CallbackRequestParams::UtilPath::Class::RulePerl::PrereqScannerPlack::App::CGIBin
Plack::App::WrapCGIPlack::Middleware::CSRFBlockPod::InheritProc::DaemonProc::SimpleQuote::Code
Quote::ReferenceReadonlyReflexRole::BasicRole::TinyRose::DBx::Object::Renderer
Router::SimpleSVG::SparklinesScalar::DoesServer::ControlSession::TokenSet::Array
Set::BagSet::FASet::ObjectSet::ScalarShishiTerm::Clui
Test::ClassTest::FatalTest::RoutineText::GuessEncodingText::HunspellText::MultiMarkdown
Text::NamesText::StringText::WordDiffThread::ApartmentThread::PoolThread::Workers
ThrowableTry::TinyTry::Tiny::SmartCatchUbic::Manual::OverviewUnicode::CaseFoldUnicode::Collate
Unicode::Collate::LocaleUnicode::GCStringUnicode::LineBreakUnicode::TussleUnicode::UCDUnicode::Util
Unix::LsofWin32::JobXML::RabbitXML::RulesXML::SimpleXML::TreePuller
ZeroMQinc::latestpQuery

Part 1: Topics
Part 2: Notes per topic
Part 3: Modules mentioned

Homepage of savage.net.au
Date: 2012-09-19