# NAME
Task::BeLike::TOKUHIROM - modules I use
# DESCRIPTION
This [Task](
https://metacpan.org/pod/Task) installs modules that I need to work with. They are listed in this distribution's cpanfile.
# MY CRITERION
- I don't like the module breaks backward compatibility.
- I don't like the module makes slow the my script's starting up time.
- Simple and small library is great.
- I don't like the module wraps and it provides ::Easy interface.
Most of ::Easy stuff does not provides all features.
A short time later, I need to switch the original library. \*Sigh\*
# TASK CONTENTS
## TOOLCHAIN
- [Minilla](
https://metacpan.org/pod/Minilla)
Minilla is an authoring tool to maintaining CPAN modules.
It provides best practice for managing your module.
- [App::scan\_prereqs\_cpanfile](
https://metacpan.org/pod/App::scan_prereqs_cpanfile)
Scan prereqs from library code and generate cpanfile.
- [App::cpanminus](
https://metacpan.org/pod/App::cpanminus)
The best CPAN module installer. It's a very simple and useful.
Zero configuration required. I always use this for install modules.
- [Carton](
https://metacpan.org/pod/Carton)
Carton is a installer for the application. It installs modules locally for
every applications.
- [File::ShareDir](
https://metacpan.org/pod/File::ShareDir)
File::ShareDir enables share directory for each CPAN modules.
You can include assets to CPAN module with this module.
- [MetaCPAN::API](
https://metacpan.org/pod/MetaCPAN::API)
It's the best client library for accessing MetaCPAN API.
- [Perl::Build](
https://metacpan.org/pod/Perl::Build)
This library helps to build perl5 binary.
- [plenv](
https://github.com/tokuhirom/plenv)
plenv is yet another perl binary manager.
Use plenv to pick a Perl version for your application and guarantee that your development environment matches production. Put plenv to work with Carton for painless Perl upgrades and bulletproof deployments.
## DATABASE
I'm using RDBMS for storing data.
- [DBI](
https://metacpan.org/pod/DBI)
DBI is a de facto standard library for accessing RDBMS.
- [DBD::SQLite](
https://metacpan.org/pod/DBD::SQLite)
SQLite3 is the best solution for storing complex data if you want to store
the data to file.
- [DBD::mysql](
https://metacpan.org/pod/DBD::mysql)
MySQL is also great if you want to store the data from web application.
- [UnQLite](
https://metacpan.org/pod/UnQLite)
[UnQLite](
https://metacpan.org/pod/UnQLite) is a great file based key value store.
[GDBM\_File](
https://metacpan.org/pod/GDBM_File) is also great, but it requires external C library.
- [Teng](
https://metacpan.org/pod/Teng)
[Teng](
https://metacpan.org/pod/Teng) is an O/R Mapper. It's very thin and fast.
## THREADING
- [Coro](
https://metacpan.org/pod/Coro)
[Coro](
https://metacpan.org/pod/Coro) provides cooperative threads. Coro is very useful if you are writing
I/O intensive script.
## TEXT PROCESSING
- [Spellunker](
https://metacpan.org/pod/Spellunker)
Pure-perl, dictionary included portable spelling checker.
I use this to checking spelling miss in POD.
- [Pod::Simple](
https://metacpan.org/pod/Pod::Simple)
This is the best POD parser library I guess.
- [Text::CSV\_XS](
https://metacpan.org/pod/Text::CSV_XS)
This is a CSV parser/generator library.
- [Text::Xslate](
https://metacpan.org/pod/Text::Xslate)
The best template engine in Perl5. It's pretty fast.
I'm use this in my web applications.
- [Text::MicroTemplate](
https://metacpan.org/pod/Text::MicroTemplate)
Is the embedded Perl. It's written in pure perl.
Then, I'm using this for tiny scripts, toolchain stuff, etc.
## WEB APPLICATION DEVELOPMENT
- [Plack](
https://metacpan.org/pod/Plack)
Plack is the infrastructure for writing web applications.
- [Amon2](
https://metacpan.org/pod/Amon2)
Amon2 is a lightweight, fast, web application framework.
- [Starlet](
https://metacpan.org/pod/Starlet)
Is a fast HTTP server written in Perl5.
- [HTML::FillInForm](
https://metacpan.org/pod/HTML::FillInForm)
Fill the stuff to form.
## IMAGE
- [Imager](
https://metacpan.org/pod/Imager)
Imager is the library for image processing.
## HTML/XML
- [XML::LibXML](
https://metacpan.org/pod/XML::LibXML)
Is the fast XML parser library.
- [HTML::TreeBuilder::XPath](
https://metacpan.org/pod/HTML::TreeBuilder::XPath)
Traverse HTML with XPath.
## OPERATING SYSTEM
- [POSIX::AtFork](
https://metacpan.org/pod/POSIX::AtFork)
[POSIX::AtFork](
https://metacpan.org/pod/POSIX::AtFork) makes to run the code when the process was forked.
I'm run `srand` and `$dbh-`disconnect> after the forking.
- [Parallel::Prefork](
https://metacpan.org/pod/Parallel::Prefork)
I'm use this for writing worker process using Q4M.
- [Filesys::Notify::Simple](
https://metacpan.org/pod/Filesys::Notify::Simple)
This library detects when the files are changed.
- [Linux::Inotify2](
https://metacpan.org/pod/Linux::Inotify2)
It makes faster the [Filesys::Notify::Simple](
https://metacpan.org/pod/Filesys::Notify::Simple)
## NETWORKING
- [Furl](
https://metacpan.org/pod/Furl)
Furl is a fast HTTP client library.
- [WWW::Mechanize](
https://metacpan.org/pod/WWW::Mechanize)
is great module to scraping.
- [Web::Query](
https://metacpan.org/pod/Web::Query)
enables jQuery like operation for HTML.
- [AnyEvent](
https://metacpan.org/pod/AnyEvent)
[AnyEvent](
https://metacpan.org/pod/AnyEvent) is a framework for I/O multiplexing. I'm use this for writing
servers. See also [Coro](
https://metacpan.org/pod/Coro).
## JSON
- [JSON::XS](
https://metacpan.org/pod/JSON::XS)
JSON::XS is pretty fast. I'm use this for the point what needs performance.
- [JSON::PP](
https://metacpan.org/pod/JSON::PP)
JSON::PP is written in pure perl. And it's bundled to latest Perl5.
I'm use this for writing toolchain related scripts.
## I/O
- [File::pushd](
https://metacpan.org/pod/File::pushd)
Change directory temporarily for a limited scope.
- [File::Find::Rule](
https://metacpan.org/pod/File::Find::Rule)
It's great for finding files.
- [File::Zglob](
https://metacpan.org/pod/File::Zglob)
It provides zsh like glob operation.
zglob('**/*.{pm,pl}')
## DEVELOPMENT
- [Devel::NYTProf](
https://metacpan.org/pod/Devel::NYTProf)
Is a best profiling library for Perl5.
## CLASS BUILDER
- [Class::Accessor::Lite](
https://metacpan.org/pod/Class::Accessor::Lite)
It's really simple accessor library. It does not need to inherit.
- [Moo](
https://metacpan.org/pod/Moo)
I use this to say "Hey! Please switch to Moo instead of Moose!".
- [Mouse](
https://metacpan.org/pod/Mouse)
I'm using this in my web applications. Because [Text::Xslate](
https://metacpan.org/pod/Text::Xslate) depends to
Mouse.
## TESTING
- [Test::More](
https://metacpan.org/pod/Test::More)
Yes. It's most basic library.
## E-MAIL
- [Email::Sender](
https://metacpan.org/pod/Email::Sender)
I'm using this library to send mails. Email::Sender 1.300000+ is based on Moo.
There is no reason to use [Email::Send](
https://metacpan.org/pod/Email::Send)!
# LICENSE
Copyright (C) tokuhirom.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
# AUTHOR
tokuhirom <
[email protected]>