How each drove me crazy

I had a program like this:

my @data = qw( bla fasel foo org jawohl hmblamm glfoo sdfoo sadfasffoo) ;

my %regex = ( type1 => bla, type2 => foo);

foreach(@data) {
    print $_,"\t";
    print " matches " if test_it($_);
    print "\n";

sub test_it {
    my $entry = shift;
    while( my($type, $regex) = each %regex) {
        return 1 if $entry =~ /$regex/;
    return 0;

I expected:
bla matches
foo matches
hmblamm matches
glfoo matches
sdfoo matches
sadfasffoo matches

but... I got not all matches.

Long story short: each does not reset the iterator for every call. And yes in modern versions of perl this behaviour is documented -- seems like I will stick with keys

Perl 5 Optimizing Compiler, Part 16: RPerl v1.2 Kickstarter Challenge

Greetings Perlites,

We're continuing our trend of success with...


After watching the video linked above, you'll want to head over to Kickstarter:

Thanks in advance for your financial support, it is critical to the future of RPerl's performance future!

~ Will the Chill

Post-YAPC update

Just to give people an update on where I am after the spill and subsequent events at YAPC:

First of all, I need *AGAIN* to give my thanks to:

@Amal1a_ (Amalia) (and everyone else at Evozon for supporting me)
@renatolrr - (Renato) YAPC Coordinator, gofer and frequent bedside supporter during the last 3 weeks of hell
@Makova65 - (Manu) Another bedside confidante and inadvertent Andalusian Spanish tutor
@jjmerelo - (JJ Merelo) Another coordinator, gofer and @YEF director, I think.

And those that I can't find on Twitter - Maribel, Victor, Pablo, Paloma and Jose. Pretty much everyone responsible for YAPC::EU 2015, probably.

I can't thank you enough, you made my last 3 weeks bearable, I'm not sure what I would've done if I were just staring at off-yellow hospital walls for 3 weeks. I *SHALL* return to Granada, and Manu, I *will* take you up on your offer.

And now for a more personal update.

Perl 5 Optimizing Compiler, Part 15: RPerl v1.2 Kickstarter Now Live

Greetings, Perl Lovers!

I am proud to announce the launch of our next Kickstarter campaign.

We immediately reached our minimum of $1,701; now our goal is to reach $20K in the next 9 days. We can do it... WITH YOUR HELP!

STEP 1: Make a generous pledge.
STEP 2: Get your friends to match your pledge.
STEP 3: Get your boss to double your pledge.
STEP 4: Go back and increase your pledge.

Thanks so much for your continued support of RPerl!

~ Will the Chill

DBIx::Class Training in Vienna - only 149 €

We are offering an one day DBIx::Class training in Vienna on the 20th October. For details please check:

The training fee will be only 149 € if you book until 28th September. Please contact me by email in order to buy a ticket.

A Date with CPAN, Part 1: State of the Union

[This is the first post in a new, probably long-ass, series.  I do not promise that the next post in the series will be next week.  Just that I will eventually finish it, someday.  Unless I get hit by a bus.]

The topic arose at $work recently: what do the cool kids use for dates these days?  Our sysadmin was looking for a simple way to get “tomorrow.” Of course, the cool kids are theoretically using DateTime, right?  So, how do we get “tomorrow” out of DateTime?  The answer came back in our chat room:


Well, okay ... that would work.  But it’s not exactly what I’d call “easy.”

I gave this talk at MadMongers showing how to do cool special...

I gave this talk at MadMongers showing how to do cool special effects with imager, like rendering realistic 3d shadows from a 2d object.

All the effects herein, were used to create my new game Hamlet Builder Pro.

[From my blog.]

September grant round started

We have five proposals to review, including the one from July.

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.