Perl: Modules

You can download all these modules, they all licensed under usual perl license. Or your can install and update them from my CPAN mirror.

General purpose

POWER::Utils
Bundle of useful subroutines.
POWER::Utils::HexDump
Helpers for working with hex dumps: convert between hex dump and byte streams, diff hex dumps. Understand many hex dump formats.
POWER::Utils::IO
Make nonblocking I/O ease.
POWER::Utils::Resource
Provide information about used resources which may help with debugging or soft limiting resources usage.
POWER::LOG
Output messages to log. Main features:
  • Output to FILEHANDLE or syslog.
  • Multiple loglevels.
  • Configurable prefix with date/time/loglevel/etc.
  • Very fast (you can notice slowdown if you'll send about 10000 lines per second into log).
  • Multiple differently configured log objects as same time.
Documentation in russian.
It's not recommended to use Sys::Syslog 0.19 to 0.24 with POWER::LOG, check this bug report.
POWER::Email
Send emails. Main features:
  • Simple email templates.
  • Attach files.
  • Sign/encrypt with GPG.
POWER::GPG
Reliable and secure interface to GnuPG.

I/O (generation 3)

POWER::Event
Main 'event loop' for user's code.
POWER::Event::IO (a.k.a. G3)
Async, event-based I/O. Main features:
  • Very fast. Our experiments show 500 urls/sec average download speed.
  • Epoll-based multiplexing.
  • Timeouts.
  • DNS resolving.
  • SSL client/server.
  • HTTPS proxy support.
  • User have 100% control over I/O and can manually use any low-level operations he need (like setsockopt(), etc.).
  • Support I/O stream objects (FIFO, TCP sockets, etc.); UDP sockets and listening sockets.
Documentation in russian.
POWER::Event::Timer
Schedule callback execution after given timeout.
POWER::Epoll
Interface for epoll(4) in linux kernels 2.6+.

I/O (generation 2)

POWER::Multi::GET
Fast parallel HTTP/HTTPS/FTP downloader. Main features:
  • Simultaneous downloading of several URLs from single process, without threads usage.
  • Simultaneous execution of several DNS requests without fork() or exec() using POWER::NB::Resolver.
  • HTTP proxy support (global and per every url).
  • HTTP support with/without HTTP proxy.
  • FTP support only with HTTP proxy.
  • GET and POST methods.
  • Auto redirects.
  • Full cookie support including expires.
  • Request gzip'ed content to minimize download size and time.
  • Traffic limitation.
  • Independent processing of all the URLs:
    • new URL could be added while processing other urls,
    • URL could be deleted from processing at any time (for ex. if you see something in http-header you can stop downloading this URL without wait for complete downloading this URL).
  • Low CPU loading.
  • Handle all prossible errors.
  • Powerful timeout configuration.
  • Number of simultaneous downloading URLs can be configured.
POWER::SSL
SSLv3 client (pure perl). Documentation in russian.
POWER::NB::IO
Non-blocking input/output for files and TCP/UDP sockets. Documentation in russian.
POWER::NB::Resolver
Non-blocking parallel DNS resolver. Documentation in russian.

CGI

POWER::iCGI
HTML templates support for CGI scripts. Main features:
  • Simple HTML templates with perl code.
  • Compile time errors or die() messages can be optionally sent to web browser. And they have correct line numbers even for errors happens inside HTML templates.
  • Configurable HTTP headers and cookies.
  • HTTP redirects.
  • File download (CGI send files to web browsers).
  • mod_perl support (external *.pl files with user functions automatically reloaded into memory if changed on hard drive).
Documentation in russian.
POWER::SQL
Generate basic SQL queries from CGI parameters in safe and secure way. Documentation in russian.
POWER::Tree
Show tree similar to Windows Explorer directory tree. Example. Main features:
  • Any operations (add/del/move/get/set/find) on tree-like structure which leaf can contain any data.
  • Converting tree into list (for output into HTML or plain text) support open/closed nodes, any node as root, etc.
  • No JavaScript required to render tree on HTML page.
Documentation in russian.

HTML parsing

Regexp::Common::Fast
Speedup CPAN module Regexp::Common by adding regexp caching.
Regexp::Common::RealHTML
Provide regexp for parsing HTML in way similar to web browsers (i.e. non-standard compliant!). Documentation in russian.