The Moose Slippery - February PR Challenge

Cross-posted from
Moose Slippery
This February my Pull Request assignment on the CPAN Pull Request Challenge was Ovid's Module, MooseX::Role::Strict . For me this was a big problem. First because it is about Moose (which I do not use) and then because it is about the Meta-Moose, the way Moose itself behaves.

The idea of the module is to allow Role users to import a role that defines a method that is already defined in the current package/object in a strict fashion. If the user declares that method will be overridden, it will work, if it doesn't, then an exception will be raised.

It was great to notice Ovid maintains a TODO list. It is not very clear what each item means, but I tried to ask him and understand. And as far as I could find, the first item of the TODO list seemed easy to implement. In fact, too easy. This Pull Request, as far as I can tell, could do the trick. But I lack knowledge on creating a test case.

So, in order to close this month's assignment, I am asking for comments, suggestions and any kind of constructive help on testing and fixing this pull request.

Adopting in the hope to improve maintenance

I am interested in getting these modules under good maintenance again:

  • Term::EditLine (Ulrich Burgbacher)
  • Win32API::ProcessStatus (Ferdinand Prantl)
  • File::Which (Adam Kennedy, Per Einar Ellefsen)
  • Regexp::Assemble (David Landgren)
  • PerlIO::gzip (Nicholas Clark)

I am happy to adopt these modules in the event that the original authors are unable or unwilling to continue maintaining them. I have what I think is a pretty good record in adopting modules while maintaining backwards compatibility and the original author’s intent. Examples include Alien::LibYAML, Mojolicious::Plugin::TtRenderer, PkgConfig, String::Template, Test::Fixme.

I have at various times over the past year or so attempted to contact each author in order to see if they would be willing to grant me co-maint or ownership. The author of Term::EditLine told me via email he would give me ownership but never followed up on it. The other authors have not responded to multiple attempts at communication. It is possible that they simply did not receive my messages.

eMortgage Logic is Hiring!

eMortgage Logic, an Assurant Company, is looking for Senior Perl Web Application Developers. Our offices are located in North Richland Hills (Dallas-Fort Worth Metroplex) AND we are open to remote positions for the right candidate.

We want your experiences and talent to influence our architecture and our team. We’ve got a wide variety of projects to keep work interesting and fun, ranging from the epitome of legacy apps to self-contained services running on the latest and greatest of Modern Perl. Having an appreciation for the evolution of the Perl web development community will be your greatest asset in modernizing and growing our stack together with us.

If any of the below practices or technologies make you excited, apply at and come aboard – let’s have fun! :)

  • Agile / Scrum / Kanban
  • Moops / DBIC / Dancer2 / Mojolicious
  • PostgreSQL 9.4 / Sybase
  • Apache 2 + mod_perl / nginx
  • Sencha Ext JS / Node.js
  • git + Stash / JIRA / Confluence
  • Memcached / ActiveMQ
  • Jenkins / Docker
  • RHEL / VMware
  • ELK / Nagios / Cacti

P.S. Like contributing to CPAN? We support open source!

A big week in Oslo

Next week I will be returning once again to beautiful Oslo, for a visit brim-full of all things Perlish.

For a start, I'm running two public classes on Wednesday March 4 and Thursday March 5,
in conjunction with and Redpill Linpro.

On Wednesday, I'll be teaching the follow-up to my Perl Best Practices class (which we ran in Oslo several years ago). In this new course, Perl Even-Better Practices, I'm revisiting the guidelines that I first devised nearly ten years ago now, updating my advice and suggestions to reflect the huge number of changes both in Perl itself, and in the CPAN ecosystem, during the intervening decade. I'll be demonstrating and explaining 50 new guidelines, designed to make your Perl code even cleaner, safer, and faster.

Public Voting through Twitter

Last week, we organized a charity party. It was more like a contest, or a show, in which 10 teams participated. Each team was supposed to perform a show on their choice: dance, music, or even a play. We also had a judge of 5 people to grade performances. These people were not the only ones to decide who wins the night, though. There was going to be a public voting, that anyone can participate.

So I wrote a Perl script for the party. We picked an event keyword starting with a # character, and listened Twitter for tweets including that word. Then, we had different keywords for each team. Anyone who wanted to cast their vote would just tweet with event keyword + team keyword, and that would be it.

Image: People asking their followers to vote for their teams

Dancer2 0.159000 waiting for you on CPAN!

Hi everyone,

It's been a little while since we had a release. We took longer this time because this release provides a few major improvements we wanted to mature.

With 13 contributors and 23 tickets closed, I'd like to present Dancer2 0.159000.

Strawberry Perl released

Strawberry Perl is available at

More details in Release Notes:

I would like to thank our sponsor Enlightened Perl Organisation for resources provided to our project.


Since it is not possible to write p5p criticism to the mailing list, I'll have to do it in my blog. @p5p: think over your guidelines. I don't believe that stuff like that needs to be blogged.

DaveM now introduced a new OP_SIGNATURE which assigns run-time args according to the compiled signature.

It basically speeds up these compiled checks

    sub f ($a, $b = 0, $c = "foo") {};


    sub f {
        die sprintf("Too many arguments for subroutine at %s line %d.\n", (caller)[1, 2]) unless @_ <= 3;
        die sprintf("Too few arguments for subroutine at %s line %d.\n", (caller)[1, 2]) unless @_ >= 1;
        my $a = $_[0];
        my $b = @_ >= 2 ? $_[1] : 0;
        my $c = @_ >= 3 ? $_[2] : 'foo';

into one OP, which does the same, similar to the new MULTIDEREF. Moving op chains into C. DaveM is now the goto guy for the big DWIM ops, compressing previous op chains into a single one.

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 run by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.