The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Task::Kensho - A Glimpse at an Enlightened Perl

VERSION

version 0.41

SYNOPSIS

    > cpanm --interactive Task::Kensho

DESCRIPTION

Task::Kensho is a list of recommended, widely used and best-in-class modules for Enlightened Perl development. CPAN is wonderful, but there are too many wheels and you have to pick and choose amongst the various competing technologies.

From http://en.wikipedia.org/wiki/Kensho:

    Kenshō (見性) (C. Wu) is a Japanese term for enlightenment experiences - most commonly used within the confines of Zen Buddhism - literally meaning "seeing one's nature"[1] or "true self."[2] It generally "refers to the realization of nonduality of subject and object."[3]

The plan is for Task::Kensho to be a rough testing ground for ideas that go into among other things the Enlightened Perl Organisation Extended Core (EPO-EC).

The modules that are bundled by Task::Kensho are broken down into several categories and are still being considered. They are all taken from various top 100 most used perl modules lists and from discussions with various subject matter experts in the Perl Community. That said, this bundle does not follow the guidelines established for the EPO-EC for peer review via industry advisers.

Starting in 2011, Task::Kensho split its sub-groups of modules into individually-installable tasks. Each Task::Kensho sub-task is listed at the beginning of its section in this documentation.

When installing Task::Kensho itself, you will be asked to install each sub-task in turn, or you can install individual tasks separately. These individual tasks will always install all their modules by default. This facilitates the ease and simplicity the distribution aims to achieve.

RECOMMENDED MODULES

Task::Kensho::Async: Async Programming

Future

represent an operation awaiting completion

IO::Async

Asynchronous event-driven programming

MCE

Many-Core Engine for Perl providing parallel processing capabilities

Mojo::IOLoop

Minimalistic event loop

POE

Multitasking and networking framework for Perl

Parallel::ForkManager

A simple parallel processing fork manager

Task::Kensho::CLI: Useful Command-line Tools

App::Ack

A grep-like text finder

App::Nopaste

Easy access to any pastebin

Module::CoreList

What modules shipped with versions of perl

Reply

reply - read, eval, print, loop, yay!

Task::Kensho::Config: Config Modules

Config::Any

Load configuration from different file formats, transparently

Config::General

Generic Config Module

JSON::MaybeXS

wrapper around the most current and fast JSON backends

Task::Kensho::DBDev: Database Development

DBD::SQLite

Self Contained RDBMS in a DBI Driver

DBI

Database independent interface for Perl

DBIx::Class

Extensible and flexible object <-> relational mapper.

DBIx::Class::Schema::Loader

Dynamic definition of a DBIx::Class::Schema

SQL::Translator

Manipulate structured data definitions (SQL and more)

Task::Kensho::Dates: Date Modules

DateTime

A date and time object

Time::Moment

A fast immutable object representing a date and time

Time::ParseDate

Date parsing both relative and absolute

Time::Piece

A date and time object based on localtime or gmtime

Task::Kensho::Email: Email

Email::MIME::Kit

The Swiss army chainsaw of assembling email messages

Email::Sender

A library for sending email

Email::Simple

A simple email object. No, really!

Email::Stuffer

A more casual approach to creating and sending Email:: emails

Email::Valid

Check validity of Internet email addresses

Task::Kensho::ExcelCSV: Excel/CSV

Excel::Writer::XLSX

Create spreadsheets in the XLSX format

Spreadsheet::Read

Read the data from a spreadsheet

Spreadsheet::WriteExcel::Simple

Create XLS documents easily

Text::CSV_XS

Manipulate comma-separated values (CSV)

Task::Kensho::Exceptions: Exception Handling

Syntax::Keyword::Try

try/catch/finally with full syntax support for control statements

Try::Tiny

Lightweight exception handling that handles the vagaries of $@.

autodie

Make builtins and other functions die instead of returning undef on failure.

Task::Kensho::Hackery: Script Hackery

These packages are included less for production work and more for whippitupitude. They reflect packages that people have found incredibly useful for prototyping and debugging before reducing down to a production script.

IO::All

IO::All combines all of the best Perl IO modules into a single nifty object oriented interface to greatly simplify your everyday Perl IO idioms.

Smart::Comments

Comments that do more than just sit there

Term::ProgressBar::Simple

Simple progress bars

ojo

Fun one-liners with Mojo

Task::Kensho::Logging: Logging

Log::Any

Bringing loggers and listeners together.

Log::Contextual

Log::Contextual is a simple interface to extensible logging. It is bundled with a really basic logger, Log::Contextual::SimpleLogger.

Log::Dispatch

This module manages a set of Log::Dispatch::* output objects that can be logged to via a unified interface.

Log::Log4perl

Log::Log4perl lets you remote-control and fine-tune the logging behaviour of your system from the outside. It implements the widely popular (Java-based) Log4j logging package in pure Perl.

Task::Kensho::ModuleDev: Module Development

CPAN::Uploader

Upload things to the CPAN

Code::TidyAll

Engine for tidyall, your all-in-one code tidier and validator

Data::Printer

Colored pretty-print of Perl data structures and objects

Devel::Confess

Include stack traces on all warnings and errors

Devel::Dwarn

Combine warns and Data::Dumper::Concise

Devel::NYTProf

Powerful feature-rich perl source code profiler

Dist::Zilla

Builds distributions of code to be uploaded to the CPAN.

Modern::Perl

enable all of the features of Modern Perl with one command

Module::Build::Tiny

A simple, lightweight, drop-in replacement for ExtUtils::MakeMaker or Module::Build

Perl::Critic

Critique Perl source code for best-practices.

Perl::Tidy

Parses and beautifies perl source

Pod::Readme

Convert POD to README file

Software::License

Packages that provide templated software licenses

Task::Kensho::OOP: Object Oriented Programming

Moo

Minimalist Object Orientation (with Moose compatibility)

Moose

a postmodern object system for Perl5 (see also Task::Moose for a larger list of Moose extensions)

MooseX::Aliases

easy aliasing of methods and attributes in Moose

MooseX::Getopt

a Moose role for processing command line options

MooseX::NonMoose

easy subclassing of non-Moose classes

MooseX::Role::Parameterized

Moose roles with composition parameters

MooseX::SimpleConfig

a Moose role for setting attributes from a simple configuration file

MooseX::StrictConstructor

a Moose extension that makes your object constructors blow up on unknown attributes

Package::Variant

Parameterizable packages

Type::Tiny

tiny, yet Moo(se)-compatible type constraints

namespace::autoclean

keep imports out of your namespace (Moose-aware)

Task::Kensho::Scalability: Scalability

CHI

A unified cache interface, like DBI

Redis

Perl binding for Redis database

Task::Kensho::Testing: Testing

Devel::Cover

Code coverage metrics for Perl

Test2::Suite

Distribution with a rich set of tools built upon the Test2 framework.

Test::Deep

Test deep data structures

Test::Fatal

Test exception-based code

Test::Memory::Cycle

Check for memory leaks and circular memory references

Test::Pod

Check for POD errors in files

Test::Pod::Coverage

Check for pod coverage in your distribution.

Test::Requires

Make running a test conditional on a particular module being installed

Test::Simple

Basic utilities for writing tests.

Test::Warnings

Test for warnings and the lack of them

Task::Kensho::Toolchain: Basic Toolchain

App::FatPacker

Pack your dependencies onto your script file

App::cpanminus

Get, unpack, build and install modules from CPAN

App::cpm

a fast CPAN module installer

App::perlbrew

Manage perl installations in your $HOME

CPAN::Mini

Create a minimal mirror of CPAN

Carton

Perl module dependency manager (aka Bundler for Perl)

Pinto

Curate a repository of Perl modules

local::lib

Create and use a local lib/ for perl modules with PERL5LIB

version

Perl extension for Version Objects

Task::Kensho::WebCrawling: Web Crawling

HTTP::Thin

A Thin Wrapper around HTTP::Tiny to play nice with HTTP::Message

HTTP::Tiny

Lightweight HTTP client implementation

LWP::Simple

Simple procedural interface to LWP

LWP::UserAgent

Full-featured Web client library for Perl

Mojo::UserAgent

Non-blocking I/O HTTP and WebSocket user agent

WWW::Mechanize

Handy web browsing in a Perl object

WWW::Mechanize::TreeBuilder

This module combines WWW::Mechanize and HTML::TreeBuilder.

WWW::Selenium

Perl Client for the Selenium Remote Control test tool

Task::Kensho::WebDev: Web Development

Attean

A Semantic Web Framework

CGI::FormBuilder::Source::Perl

Build CGI::FormBuilder configs from Perl syntax files.

Dancer2

the new generation of Dancer, a lightweight yet powerful web application framework

HTML::FormHandler

HTML forms using Moose

HTTP::BrowserDetect

Determine Web browser, version, and platform from an HTTP user agent string

MIME::Types

Definition of MIME types

Mojolicious

Real-time web framework

Plack

Flexible superglue between Web Servers and Perl Web Frameworks or code.

Task::Catalyst

Catalyst is The Elegant MVC Web Application Framework. Task::Catalyst is all you need to start with Catalyst.

Template

(Template::Toolkit) Template Processing System

Web::Simple

A quick and easy way to build simple web applications

XML::Atom

Atom feed and API implementation

XML::RSS

Creates and updates RSS files

Task::Kensho::XML: XML Development

XML::Generator::PerlData

Perl extension for generating SAX2 events from nested Perl data structures.

XML::LibXML

Perl Binding for libxml2

XML::LibXSLT

Interface to the gnome libxslt library

XML::SAX

Simple/Streaming API for XML

XML::SAX::Writer

Output XML from SAX2 Events

INSTALLING

Since version 0.34, Task::Kensho has made use of the optional_features field in distribution metadata. This allows CPAN clients to interact with you regarding which modules you wish to install.

The cpanm client requires interactive mode to be enabled for this to work:

    cpanm --interactive Task::Kensho

LIMITATIONS

This list is by no means comprehensive of the "Good" Modules on CPAN. Nor is this necessarily the correct path for all developers. Each of these modules has a perfectly acceptable replacement that may work better for you. This is however a path to good perl practice, and a starting place on the road to Enlightened Perl programming.

SEE ALSO

http://www.enlightenedperl.org/, Perl::Dist::Strawberry

SUPPORT

Bugs may be submitted through https://github.com/EnlightenedPerlOrganisation/task-kensho/issues.

There is also an irc channel available for users of this distribution, at #epo on irc.perl.org.

AUTHOR

Chris Prather <chris@prather.org>

CONTRIBUTORS

  • Karen Etheridge <ether@cpan.org>

  • Chris Nehren <apeiron@cpan.org>

  • Leo Lapworth <leo@cuckoo.org>

  • Dan Book <grinnz@grinnz.com>

  • Dan Book <grinnz@gmail.com>

  • Mohammad S Anwar <mohammad.anwar@yahoo.com>

  • Olaf Alders <olaf@wundersolutions.com>

  • Rachel Kelly <rkellyalso@gmail.com>

  • Shawn Sorichetti <shawn@coloredblocks.com>

  • Andrew Whatson <whatson@gmail.com>

  • Florian Ragwitz <rafl@debian.org>

  • Rick Leir <rleir@leirtech.com>

  • Tina Müller <cpan2@tinita.de>

COPYRIGHT AND LICENCE

This software is copyright (c) 2008 by Chris Prather.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.