• Commented on Perl Weekly Challenge 010: Roman Numerals
    See also:
  • Commented on 25 years of Perl 5 releases
    Some other links for your perusal: * *
  • Commented on Daily CPAN uploads: Mission continued...
    Shameless plug for my version of the challenge on :-)...
  • Commented on Wallflower improvements and issues
    See also daxim's very detailed response on Reddit:
  • Commented on Wallflower improvements and issues
    X-Robots-Tag: noindex sounds exactly like what I'm looking for. Thanks, Aristotle! Regarding an application that can be served both as static site and full web application, I've never built one. However the version I keep playing in my head is...
  • Commented on A widespread and broken Perl idiom
    To be conviced of how widespread the technique is, just check:*@ARGV...
  • Commented on A widespread and broken Perl idiom
    This is explained in the last section, and the linked patch shows an example. The first code excerpt became: my $content = do { local ( *ARGV, $/ ); @ARGV = ("$file"); <> };...
  • Posted A widespread and broken Perl idiom to BooK

    The following code is using a widespread Perl idiom, taking advantage of features designed for one-liners:

    my $content = do { local ( @ARGV, $/ ) = ("$file"); <> };

    Another trick here is the array assignment, which slurps all elements of …

  • Commented on Wallflower improvements and issues
    Also, I never remember which of 12PM and 12AM is midnight....
  • Commented on Wallflower improvements and issues
    This was scheduled for some time later, to give me a last chance to review and possibly reword. I guess adding a time zone to the scheduled date would make sense. :-)...
  • Posted Wallflower improvements and issues to BooK

    Wallflower is my static website generator. Well, not really: it's actually generating a static version of any

  • Commented on Patreon and Perl
    Gratipay has a one-click migration to Liberapay, for the lazy ones among us....
  • Commented on What Time is Midnight?
    Well, according to The Unix time number increases by exactly 86,400 each day, regardless of how long the day is....
  • Commented on Split a .pm into a .pod and a .pm
    `perldoc -u` does half the job....
  • Posted Try this awesome trick to make your language toolchain better to BooK

    Get the lead developers together in a hotel for four days. Remove all distractions. Feed them. Stand back and watch bugs get fixed, problems get solved, and new ideas implemented.

    Earlier this month 38 Perl toolchain developers assembled in Lyon for the Perl Toolchain Summit, the event pre…

  • Posted Git::Database now supports seven different Git backends to BooK

    A few weeks ago, SROMANOV sent me a patch for Git::Database adding initial support for accessing the Git object database references…

  • Posted About the Perl Toolchain Summit to BooK

    We've had a few questions and discussions about the toolchain summit since our announcement in January. In this blog post we'll address some of those: why the name change, what things are fair game to be worked…

  • Posted The Perl Toolchain Summit 2017 to BooK

    It is my pleasure and honor to announce that the Perl Toolchain Summit will be held in Lyon, France from Thursday 11th May 2017 through Sunday 14th May 2017. This is the event previously known as the Perl QA Hackathon, where we bring together as many of the…

  • Commented on CPAN Testers RULE!
    Same happened to me recently. Thanks Slaven (for the report AND for looking for a probable cause) and CPAN Testers! I've come to rely * a lot* on the CPAN testers for picking up obscure issues in my code. This...
  • Commented on Looking for Eugene van der Pijll
    Eugene gave me co-maint of DateTime-Calendar-Pataphysical back in April 2014, so he was active somewhat recently. I contacted him via email at the address pijll at cpan dot org and he replied with pijll at gmx dot net....
  • Posted Introducing Git::Database to BooK

    Git::Database is yet another module I wrote to interact with Git. It wraps an OO-layer around Git objects (blobs, trees, commits, tags), in a way that's very similar to what Git::PurePerl does. It has no opinion on the actual means to get the…

  • Commented on POD speculation
    I'm using the title-based approach too, for the same reasons. I've also switched to putting only the function/method name in the title (as it makes the HTML anchor simpler), and putting a code example below in a verbatim block (which...
  • Commented on The Secret Life of Acronyms
    Actually, the French Perl Mongers have a claim for prior art. We have been using the name "patch" for our irregular hackathons since 2013: patch -p0 patch -p2 The patch -p2 hackathon in Lyon is over patch -p3 We're very...
  • Posted My Perl QA Hackathon 2016 to BooK

    I attended the Perl QA Hackathon 2016 in Rugby. I didn't come with any specific projects, and planned to participate in some of the discussions, help others if possible, learn a bit of Perl 6 and if all else failed, work on some of my own CPAN…

  • Posted test_requires_git to replace has_git to BooK

    About a year ago, a few weeks after the Perl QA Hackathon 2015, I started hacking on

  • Posted It's never too late to find a bug to BooK

    For the last five years, the version comparison code in Git::Repository started with this:

    my ( $r, $v, @o ) = ( shift, ( grep !ref, @_ )[0], grep ref, @_ );


  • Commented on ...but which one is easier to learn?
    At some point in the past (2003?), "Learning Perl" was split in two, the second half being published as "Learning Perl Objects, References & Modules". That second half was then renamed "Intermediate Perl". So I think a far comparison should...
  • Posted Introducing Git::Version::Compare to BooK

    As explained last week, I took all the Git version comparison code out of Git::Repository, and moved it into a new module:

  • Posted Test your Git wrapper against 500 versions of Git to BooK

    Ever since I wrote Git::Repository, I've paid attention to supporting as many Git versions as possible.

    This is possible because it is a really thin wrapper around Git, that expects only a few sub-commands to exist. Therefore the burden of making sure the G…

  • Posted as a reference site to BooK

    While going through my repositories, looking for things to work on during the holidays, I found a draft blog post for the pulse, that I initially planned to publish in June 2015:…

Subscribe to feed Recent Actions from BooK

  • Aristotle commented on Wallflower improvements and issues

    The most helpful tip I saw is to think of 12:01. Is that in the AM or PM block? Well the hour is in the same block. That means 12AM is midnight, because 1 minute after midnight is AM, and 12PM is noon, because 1 minute after noon is PM.

    This combines with the fact that hours run from 1–12 instead of 0–11 to mean that AM/PM flip exactly on the noon/midnight boundaries, but each 1–12 block is offset by an hour against that boundary. So AM/PM and 1–12/1–12 are offset against each other… which is silly of course. That gives you another way of remembering though: 12

  • Aristotle commented on Wallflower improvements and issues
    what if the application generated a list of links that are expected to exist

    I was going to shout “sitemaps!” before I read on and saw you already have that covered. 😊


    An HTTP application should not be looking at Usenet headers really. If you do want to add support for something then the corresponding standard for that in HTTP is the Robots tag. If you do add support I think it should be an option, though, and probably not t…

  • Aristotle commented on A widespread and broken Perl idiom

    I became aware of this as far back as my PerlMonks days, so at least 15 years ago. Namely, I memorised that I should be writing the idiom like this:

    my $content = do { local ( *ARGV, $/ ) = [ ... ]; <> };

    This differs from the incorrect version by exactly 3 character swaps.

  • Damian Conway commented on A widespread and broken Perl idiom

    Sadly, this elegant approach doesn't solve the original problem.

    typeglob only localizes the slot being assigned to. The rest of the typeglob remains unlocalized, which means the magic <> still messes up the global $ARGV and the global *ARGV{IO} filehandle.

    For example:

    sub report_ARGV {
        use Data::Dump 'pp';
        say shift;
        say '  $ARGV       = ', pp $ARGV;
        say '  @ARGV       = ', pp @ARGV;
        say '  %ARGV       = ', pp %ARGV;
        say '  *ARGV->tell = ', *ARGV->tell;
  • Aristotle commented on A widespread and broken Perl idiom

    Oh, wow.

    I had to go all the way to

    $_ = [ __FILE__ ] for local *ARGV;

    to make it work in a single statement. Even something like

    *{ \local *ARGV } = [ __FILE__ ];

    wouldn’t work, despite the fact that circumfix deref is effectively a do { } block with a whole separate inner scope (e.g. *{ my $x = 'hi'; local \*ARGV } = [ __FILE__ ]; say $x; is a strict vars violation).

    I don’t think local is that super-intelligent, which means what’s going on must be something like …

Subscribe to feed Responses to Comments from BooK

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.