Sparrowdo - a simple configuration management tool written on Perl6 and consuming sparrow plugins


This is the very first ( to take it for a spin ) release of sparrowdo - a simple configuration management tool written on Perl6 and consuming sparrow plugins.

This is where Perl5, Perl6 could make a synergy. Consider a simple example of sparrowdo scenario:

$ cat sparrowfile

use v6;

use Sparrowdo;

task_run  %(
  task => 'install my packages',
  plugin => 'package-generic',
  parameters => %( list => 'git-core carton cpanminus' )

task_run  %(
  task => 'install psgi app',
  plugin => 'perl-app',
  parameters => %( 
    'app_source_url' => '',
    'git_branch' => 'master',
    'http_port' => 3030

All it does is:

  • installing some packages required for further deployment ( git, cpanm, carton )
  • installing perl5 psgi application by fetching source code from remote repository, installing dependencies with cpanfile/carton and running service using Ubic and Starman.

Here we go. On my vagrant Ubuntu 14.04 Trusty box I will have:

Perl 5 Porters Mailing List Summary: June 9th-15th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week. Enjoy!

Refactor of Perl Critic policy ProhibitUnusedVarsStricter

Perl::Critic::Policy::Variables::ProhibitUnusedVarsStricter (whew!) is a Perl Critic policy that attempts to be more stringent about finding unused variables than the core policy of similar name. One of the things that has to be done to make this happen is to figure out which variables are interpolated into double-quotish strings.

The original version of this module had its own string-analysis logic, as do other Perl-Critic policies that have to figure out which variables are really being used. With the mainstreaming of postfix dereferencing, it seemed to me that the recognition of interpolated variables had become complex enough that a separate module to figure this stuff out was justified. Thus was born PPIx::QuoteLike.

Newbie Poison

After encountering CodeNewbie at OSCON 2016 I've been thinking a lot about why there are so few new developers interested in Perl. I haven't been a Perl beginner for a very long time so I went looking for resources and found FAQ for the beginners mailing list. I wanted to know how active the mailing list was so I immediately went to the web achive. Reading through the list I saw things like:

"Is there a reason why you think one CPU is better than another?"

"your code exhibits many bad elements, and you don't seem to apply all the advice I've been giving you. Please go over , read it and internalise it."

Condescending, abusive advice is worse than no advice at all. There's no way I'd send a beginner into that. Nobody should have to learn like that. Seeing it ruined my afternoon. Maybe I should have read more of the FAQ:

"Who owns this list? Who do I complain to?"


Introducing SVG::Estimate

If you do anything with 2 dimensional CNC machines such as plotters, mills, or lasers, you’ve probably used some form of vector graphics. The most popular open source vector graphics type is called SVG or Scalable Vector Graphics. If you’re doing this professionally, you need to know how to charge for that work, and if you know the length of the shapes included in that vector file, you can do a pretty good job of preparing an estimate for a customer. That’s where SVG::Estimate comes in. It does the mind melting math to tell you the length of arbitrary lines and shapes inside a vector file. 

[From my blog.]

Missing Smart Match

I know that smart match is considered experimental at best and is likely going away at worst, but I hate that! In what world is:

if( grep $_ eq $scalar, @array ) { }

Better than this?

if( $scalar ~~ @array ) { }

The former doesn’t even shortcut. Some will say that I should use any like this:

use List::MoreUtils qw/any/;
if( {$scalar eq $_} @array ) { }

But any damn fool can see that it’s 2 lines of code instead of 2 characters. It’s not more readable. It’s just foolish. Some parts of smart match suck and I get that. So throw out those cases, not smart match itself.

[From my blog.]

perl6: count chinese characters in string


This is my first post here and it will be a short one.

I was asked to count chinese characters in a string. Most of us know the annoying task of writing an essay with $n words. For chinese it will be $n characters.

Would be a shame if we take this too serious and write too much.


my Str $text = "你好! 我喜欢!";

$text ~~ s:g/ \W | \d //;

say $text.chars;

And that's it.

So why even blog about it? What I think is amazing is that all worked with the first attempt.
I often just try stuff in perl6 without knowing if it will work the way I think it will work.

However most of the time, it just does... and this is why I love this language!

Keep up the great work!!


YAPC::NA::2016 - Wednesday Night Pull Request Challenge

craigslist is sponsoring the Wednesday Night Pull Request Challenge at YAPC::NA::2016 on 6/22 at 6pm-10pm (or 'til). This event is modeled, inspired, and loosely affiliated with Neil Bower's fun and successful "CPAN Pull Request Challenge" .

Food and drinks will be provided, so PLEASE RSVP.

A primary goal of this event is to introduce participants to the wonderful world of contributing to the Perl ecosystem.

This is a beginner friendly event, and assistance will be given to anyone needing help getting started.

To make things even easier, there will be a list of eligible modules to choose from. Participants may also come with their own projects and modules to work on.

For more information and to RSVP, please visit

About is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.