Robert Rothenberg

  • Website:
  • About: I was born on the Moon but kidnapped by astronauts and raised in the suburbs of Grumman. Eventually, I drifted along the Gulf Stream to Northern Europe. Blogs about Perl, Puppet, Linux, programming, and whatever etc.
  • Commented on Please relicense from "Perl 5" to MIT or Apache 2.0 license
    What problems have company lawyers had with the Artistic license? I've never run into this before, even at a previous employer where lawyers had the developers document every open source library or package used (including every CPAN module)....
  • Commented on Addressing CPAN vulnerabilities related to checksums
    PAUSE signatures means that you trust that this is what was uploaded to PAUSE. But it's possible that a malicious person stole an author's credentials to upload something. Author signatures means that you trust that the author has approved this...
  • Commented on Addressing CPAN vulnerabilities related to checksums
    A related aside: it would be nice to have CPAN authors register GnuPG keys with PAUSE, and an option to require their distributions be signed by their keys. Any change to an author's keys or uploads that aren't signed could...
  • Commented on Addressing CPAN vulnerabilities related to checksums
    If a malicious person managed to get write access to the filesystem of a trusted mirror, then the PAUSE-signed CHECKSUMS add a safety check to ensure that the files were not tampered with....
  • Posted Lexical readonly state variables with PerlX::Let to Robert Rothenberg

    I’ve released a new module PerlX::Let that adds a new “let” keyword so that you can do the following:

    let $x = 1,
         $y = "string" {
      if ( ($a->($y} - $x) > ($b->{$y} + $x) )
  • Commented on Skeleton Week: Perl plugin for collectd
    Thanks for the link, that's interesting. But collectd has a support statsd plugin, and there are several Perl modules for sending metrics to statsd....
  • Commented on Promoting Perl
    Andrew's point about API support is a good one. I'd like to add that while it's great to have "killer apps" written in Perl that are widely used, most companies won't care whether they are written in Perl. Their developers...
  • Commented on Promoting Perl
    Are you promoting Perl, or pecific projects written in Perl? These are not the same thing. Who are you promoting Perl to? 1. Software Developers? 2. Management? I don't think (1) is difficult, as long as they have a reason...
  • Posted Adding a ROADMAP section to the POD to Robert Rothenberg

    I've like to propose adding a ROADMAP section to module documentation.

    It would be a *short* summary of planned changes for future versions, noting what features would be removed or changed, or upcoming new features that will be added.

    More detailed roadmaps should be put in a sepa…

  • Posted Graphics::ColorNames changes to Robert Rothenberg

    I have been making a lot of changes to Graphics::ColorNames lately. The module has gone too long without any maintenance, and suffered from feature bloat.

    Some notable changes that are already on CPAN:

    • A switch t…
  • Commented on Type::Const released
    I would have thought something like has things => ( is => 'const', isa => BagOfWind, ); It should be fairly easy to write something automatically modifies the type and adds a coercion....
  • Commented on Type::Const released
    I've updated it in v0.3.0 so that there is a single Const type that takes an optional parameter, e.g. Const[ArrayRef[Int]] I have removed the ConstArrayRef and ConstHashref types as well....
  • Posted Type::Const released to Robert Rothenberg

    I've created an experimental Type::Tiny library called Type::Const that coerces ArrayRefs and HashRefs into constants using Const::Fast.


    When you have read-only attributes in Moo(se) classes:

  • Commented on File::Slurp is broken and wrong
    it's not particularly relevant to slurping as the handle won't be shared between threads. It doesn't matter if the filehandle is shared. Just calling binmode will lead to a segfault....
  • Commented on File::Slurp is broken and wrong
    I believe that the default encoding using by File::Slurp is because of a Perl bug with threads:
  • Posted Pod::Readme can now be used with Dist::Zilla to Robert Rothenberg

    I've recently released a new version of Pod::Readme with hooks to work with Dist::Zilla.

    I also worked with Fayland 林 so that

  • Commented on Scratching an itch - interpolable HTTP Status constants
    Actually, scratch that last reply. I misread it. Yes, you can use %hash = ( HTTP_OK() => ... ) or ${\ HTTP_I_AM_A_TEAPOT } but the code is a bit ugly. Admittedly, this module does add extra dependencies (although some like...
  • Commented on Scratching an itch - interpolable HTTP Status constants
    @bor Yes, there's a simplified way of defining HTTP constants that way discussed in But there's no compile-time checking of typos. If you type $HTTP{BSD_REQUEST}, you won't get an error and may miss a subtle bug. (Note that "BSD"...
  • Posted Scratching an itch - interpolable HTTP Status constants to Robert Rothenberg

    When working on larger web applications, I prefer to use HTTP::Status to provide human-readable constant names in the code. This is especially helpful for anything other than the common 200, 404 or 500 status codes.

    But the constants exp…

  • Posted Pod::Readme v1.0.2 released to Robert Rothenberg

    I released a new version of Pod::Readme yesterday. It's a module for "Intelligently generate a README file from POD" by using POD =begin/=end and =for commands to control what parts of a module's POD are included/excluded in the…

  • Commented on A pre-release of Pod::Readme is available on CPAN
    @leon I am in the process of changing it from Moose to Moo. As for v5.10, I prefer using some of the features of v5.10 to simplify the code. If I get enough feedback from module authors asking for support...
  • Commented on Rewriting Pod::Readme
    A pre-release has been uploaded to CPAN. See the announcement....
  • Posted A pre-release of Pod::Readme is available on CPAN to Robert Rothenberg

    Last month, I mentioned that I was rewriting Pod::Readme.

  • Commented on Test::More has lots of crazy new development that's breaking my modules
    As a module author, I also don't want to see fails for spurious reasons for my modules. But when I'm choosing a module to use, I look closely at the failures to see why they are failing before deciding not...
  • Commented on Rewriting Pod::Readme
    Thanks for the feedback. @Ether: I've thought of using Moo, but I am using traits and MooseX::Object::Pluggable to load plugin-roles. I'm unsure how to do that using Moo....
  • Posted Rewriting Pod::Readme to Robert Rothenberg

    Back in 2005, I wrote Pod::Readme. It languished a bit, and David Precious took over maintainership around 2010.

    The core idea for this is that README files contain redundant information that is already in the POD, but not everything in th…

  • Posted Transparently testing Catalyst applications for memory leaks to Robert Rothenberg

    Summary: you can use CatalystX::LeakChecker to check every request in your test suite for memory leaks.

    From my blog, here.

  • Posted Const::Exporter Released to Robert Rothenberg

    A few days ago, I released Const::Exporter to CPAN.

    Basically, it's a module that allows you to define a module with exportable constants that:

    • can be read-only scalars, arrays, or hashes (as well as the standard constant…
Subscribe to feed Recent Actions from Robert Rothenberg

  • Neil Bowers commented on Addressing CPAN vulnerabilities related to checksums

    Thanks Jim - now fixed.

  • Neil Bowers commented on Addressing CPAN vulnerabilities related to checksums
    If the mirror is trustworthy and so is the connection to it, does verification of the PAUSE-signed CHECKSUMS serve any remaining purpose?

    Marginal benefit, I'd say. It's an additional check that you're getting the expected file.

    I've heard anecdotally that the checksums once identified a case where an rsync had been interrupted and result in a truncated file.

  • nhorne commented on Addressing CPAN vulnerabilities related to checksums

    I have a local mirror which downloads from, so it's trusted. I then mount the mirror using NFS, so the entry in for urllist starts with "file://foo/bar". Even though I know it's trusted I still get:

    Warning: checksum file '/mnt/CPAN/authors/id/G/GB/GBARR/CHECKSUMS' not conforming.

    The cksum does not contain the key 'cpan_path' for 'CPAN-DistnameInfo-0.12.tar.gz'.
    Proceed nonetheless? [no]

    How can I handle this scenario?

  • Nerdvana commented on Please relicense from "Perl 5" to MIT or Apache 2.0 license

    In order for someone to use a perl module, they have to run it with a perl interpreter, which requires that they already comply with the perl5 license. I think this is why most module authors default to that.

    Is there really any benefit to changing module licenses to something different from the interpreter that runs them?

  • Aristotle commented on Please relicense from "Perl 5" to MIT or Apache 2.0 license

    I was going to ask the same thing. Is the perl interpreter itself going to relicense?

    “Same terms as Perl 5” is both the default and the best practice, and for obvious good reason. Distributing a module under a different license than the interpreter should be a considered choice at best and one that should be avoided if possible.

    If there is a problem with the licensing terms of Perl 5 then that’s also where the issue should be addressed.

    Is any work being done there?

Subscribe to feed Responses to Comments from Robert Rothenberg

About is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.