Some new releases

I released Test::File 1.33 yesterday, which fixed a minor MANIFEST glitch with 1.32, which I released three days ago.  (I know it’s been discussed before, but I guess I never really appreciated it: it sure would be nice if CPAN Testers could report stuff like that).  Version 1.32 fixes a number of CPAN RT tickets (in fact, it pretty much closes out all the open bugs), most of which you won’t care about.  If you happen to be using Windows, this may fix a number of test failures, although there are still a few left that I’m working with schwern to fix.  (If you are running Windows and you happen to see some mysterious errors which boil down to the fact that “skip” isn’t the same as “SKIP”, it’s definitely safe to ignore those.)

Learning Perl Challenges

I'm starting a series of Learning Perl Challenges at, the blog I maintain for Learning Perl. While I was posting about the Student Workbook for Learning Perl, I started thinking about the difference for exercises based on a particular chapter or feature, and capstone exercises that would use anything or everything in the book.

The first challenge is to reimplement which to find programs based on a pattern instead of an exact name.

I’m quite pleased to announce that Shadowcat Systems has...

I’m quite pleased to announce that Shadowcat Systems has decided to sponsor YAPC::NA 2012!

Shadowcat Systems is a developer, sponsor of, and contributor to open source software projects including Catalyst, Moose, Moo, Tak, Devel::Declare and DBIx::Class. Shadowcat provides consultancy, training and support for these projects and for most of CPAN; systems management and automation; the design and implementation of network architecture; the development of proprietary and open source custom web applications; and offers Perl refactoring and project crisis management.

Shadowcat Systems are based in the United Kingdom but delivers solutions to a global community of clients via onsite supervision along with traditional and internet based communications. 

[From the YAPC::NA Blog.]

A milestone for Alien::Base

I have been working on a set of base classes intended to make creating a new Alien:: distribution for some library as easy as making a simple Module::Build based distro. So far the code isn’t on CPAN yet, follow its progress on GitHub.

I haven’t been feeling so well today, so I have been sitting around watching movies (which I own on DVD) on TV. Of course I can’t sit still that long without doing anything so Alien::Base saw a burst of activity today.

Along with testing I am also keeping an Alien::Base-based Alien::GSL (which provides the Gnu Scientific Library) in the examples folder. The big news today is that this example distro can now query the GNU FTP server, pick the newest version of the library. It then downloads, extracts and builds the library in a temporary folder. Finally it “installs” the library in a File::ShareDir directory in the Alien::GSL root/share directory. Even this isn’t as cool as how it does this:

cpXXXan is moving ...

... although you probably won't notice.

Executive summary: your disks hate you

Until about 20 minutes ago, cpXXXan ran in a virtual machine on a box that I rent. That box also hosts VMs for CPANdeps, for some of my own CPAN-testing activities, and a few other things. I did it that way because it was cheap and convenient. However, over the three years that it's been running (gosh, is it really that long?!?) this has become a rather, umm, "sub-optimal" solution.

That's because the CPAN has got much larger, as has the number of CPAN-testers reports. Even worse, the rate of increase of both has been consistently increasing. This means that the amount of work to be done for the daily imports of new data, both for cpXXXan and for CPANdeps, has increased dramatically. This means that the jobs take longer, and scheduling them has become a Hard Problem.

Perl and Opendata

Thiago Rondon will give a talk at YAPC::NA 2012 described as:

Opendata is the idea that certain data should be freely available to everyone to use and republish as they wish, without restrictions from copyright, patents or other mechanisms of control.

In Brasil, we worked last year with some solutions with opendata, that government can be transparent and make a good comunication with society.

And the result of this work are three websites that use Catalyst, DBIx::Class and a lot modules of CPAN.

One of this websites is “Where does my money go ?” -

Another one, is about where is crime in one state of Brasil, that with a map you can see where it is happy by time. -

At last, one about our representants -

In this talk, I explain how Perl can be a good language to make nice and fast websites with opendata.

[From the YAPC::NA Blog.]

The Perl Learning Environment

For YAPC::NA, I'm creating a new course called "From Zero to Perl" (although I'll probably actually call it "0..Perl"). JT Smith wants to create not only new Perlers, but new programmers, and he wants to start them with Perl. I'm up for the challenge. However, there are some things that you might have opinions and suggestions on.

The Learning Perl course I teach assumes that you already know how to program, just not in Perl. Some non-programmers do alright, many struggle, and a few outright fail. Most of those have nothing to do with Perl as a language. Programming as a way of thinking is hard, especially for the complex things people what to do right away with Perl. It's easy to make a turtle draw geometric shapes, it's not conceptually easy to design a blogging platform.

Why is this "use" a syntax error?

Many Perl developers are unaware that they can assert a module version with an import list at the same time. For example:

use Test::More 0.96 tests => 13;

However, the following is a syntax error:

use Test::More  .96 tests => 13;

Frankly, I don't know why. Here's a program which demonstrates my confusion. It exhibits more or less the same behavior on 5.8.9, 5.10.1, 5.12.4 and 5.14.2.

And the output is:

SV = NV(0x7fc84083a5e8) at 0x7fc84082be90
  REFCNT = 2
  NV = 0.96
SV = NV(0x7fc84083a5e0) at 0x7fc840800fd0
  REFCNT = 2
  NV = 0.96
Argument "2.121_17" isn't numeric in subroutine entry at (eval 2) line 2.

Error is: none
String found where operator expected at (eval 3) line 1, near ".01 'Dumper'"
        (Missing operator before  'Dumper'?)

Error is: syntax error at (eval 3) line 1, near ".01 'Dumper'"

The Devel::Peek shows that both numbers are the same, as far as Perl is concerned, but using .96 for the version is a syntax error. Reading perldoc use hasn't cleared this up for me. Is this a parsing bug or is there something else going on?

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.