Easily add tab completion feature to your CLI program using Getopt::Long::Complete

There are several modules to help you create command-line program with tab completion feature, including Getopt::Complete and Perinci::CmdLine (and its new lightweight alternative Perinci::CmdLine::Lite. Now here's another one. Introducing Getopt::Long::Complete.

This module is a drop-in replacement for the venerable ="https://metacpan.org/pod/Ge…

Net:: vs WWW:: vs WebService::

(This blog post will serve as a document that I point to for people to read when I suggest people renaming their third-party-API modules [although not necessarily always from Net:: to WWW:: or WebService::]. I'm currently on a Questhub quest that does exactly this.)

Perl being a glue language, people write many modules to connect to third-party API services. These days, most public API services are web-based. What namespace should you pick for your module?


A lot of people still use /var/www/users/steven_haryanto/index.html

Some statistics from Debian package tags

I'm running Debian Stable (7.x, Wheezy, 7.4 to be exact) on amd64.

Count all Debian packages by their implementation language (I know, not the most efficient way):

% ( for tag in `debtags tagcat | grep '^Tag: implemented-in::' | sed 's/^Tag: //'`; do
    echo -e `debtags search $tag | wc -l` "\t" $tag
  done ) | sort -nr
4439     implemented-in::c
3258     implemented-in::perl
1840     implemented-in::c++
1063     implemented-in::python
304      implemented-in::java
289      implemented-in::ruby
214      implemented-in::ocaml
199      implemented-in::lisp
194      implemente…

Benchmarking several ASCII-table-generator modules

UPDATE #1 2014-07-11: Added Catmandu::Exporter::Table. This module is not exactly lightweight, so I will not consider it for usage in Perinci::CmdLine::Lite, but it's interesting to benchmark anyway.

UPDATE #2 2014-07-11: Nudged by me, Jakob extracted the table-generating
functionality of Catmandu::Exporter::Table into its own module Text::MarkdownTable. This module depends on nothing but Moo. Great job Jakob. Although for my particular proje…

Skipping large files when mirroring your mini CPAN

My Internet connection at home is not great: it's rather slow and flaky. When I ran minicpan to update my mini CPAN earlier today, the process always seemed to choke on this file: id/D/DG/DGINEV/Lingua-EN-SENNA-0.03.tar.gz: exit with Connection time-out error. The first run I thought it must be my connection and simply re-ran the script. After the second and third and being stuck in the same file, I got curious. Lo and behold, the file is 185MB big!

I then typed this to peek into my CPAN mirror:

% cd /cpan
% find -type f -size +10M

Turns out, there are qui…