Versioning Loops

I just found something interesting.. well, at least, fun:

Package namespace         installed    latest  in CPAN file
Perl::MinimumVersion           1.29      1.30  CHORNY/Perl-MinimumVersion-1.30.tar.gz

After installing Perl::MinimumVersion, I get:

Package namespace         installed    latest  in CPAN file
Perl::MinimumVersion::Reason      1.20      1.29  CHORNY/Perl-MinimumVersion-1.29.tar.gz

And if I ask to install Perl::MinimumVersion::Reason, yeah, of course, I get:

Package namespace         installed    latest  in CPAN file
Perl::MinimumVersion           1.29      1.30  CHORNY/Perl-MinimumVersion-1.30.tar.gz

Probably a good idea to add a bug report... later.

But fun to have problems with versions on a module that deals with versions.

Perl 5 Porters Weekly: November 19-November 25, 2012

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list. Sorry I didn't publish a summary last week. Although there was list traffic I didn't find any messages I wanted to summarize.

This week's topics include:

  • perl 5.17.6 is now available!
  • On deprecating unescaped literal left brace
  • Parrot 4.10.0 released
  • Perl in Git on Windows?
  • Move tests not using t/ into a separate directory
  • Hash randomisation breaks CPAN

Visually graphing module dependencies

I've just released the first version of prereq-grapher, a script which generates the dependency graph for a module or script in any of the formats supported by Graph::Easy. The functionality lives in App::PrereqGrapher, which in turn uses Perl::PrereqScanner to extract dependencies.

Smart whitespace and the Ruby Slippers

Scannerless parsing

[ This is cross-posted from the new home of the Ocean of Awareness blog. ]

I've been working on a "scannerless" Marpa interface. "Scannerless" means that the user does not need to write a separate lexer -- the lexer (scanner) is included in the parser. One of my working examples is the synopsis from the main Marpa::R2 POD page, rewritten to do its own lexing:

:start ::= Expression
Expression ::=
    || Expression '*' Expression action => do_multiply
    || Expression '+' Expression action => do_add
Number ~ digits '.' digits action => do_literal
Number ~ digits action => do_literal
digits ~ [\d]+

Here the notation is that of my last post, as documented here. New for the scannerless parser are

A Question of Location

The great detective was staring at the door, as he had done for the past two weeks. He needed a case to occupy that mind. Thankfully today the door opened and Holmes had a case.

A man stepped in and introduced himself as Mr. Mokko.

”Watson, here is a man having troubles with Perl.”

”Holmes, how can you know that?”

”We can tell from the lines on his face, the stiff wrists and the pads of his fingers that he a much maligned sysadmin; from the Hawaiian shirt and the hat that he’s into the Perl scene. The scowl and the fact that he’s here on our doorstep tells me that he’s having troubles.”

Holmes looked back to the man and said, “Come now, you must tell me the tale.”

Validation::Class: Released version 7.900001

I wanted to formally annouce the release of Validation::Class, as of version 7.900001 the codebase is dramatically different though it maintains backwards compatibility at about 95%. The following is the current complete list of core directives (validation rules). As stated in the documentation, the purpose of the core directives is merely to provide a reasonable layer of protection against bad/malformed data and validators are not very sophisticated. e.g. the email directive does not perform a host lookup, etc:

Method::Signatures: where and when

I’ve just released a new version of Method::Signatures: 20121201, a.k.a. yesterday.  This one has been a long time coming—I thought for a while there that $work was going to either bury me or sap my will to live—but it’s finally here, and I hope you MS fans out there will be rejoicing.  Let’s take a look at some of the goodies.

(By the way, most of these awesome new features came from the Damian, as I described in my post about Git and patches.  The remainder come from schwern, who is of course the original author of MS.  This time around, I really am just the guy who put it all together and uploaded it for all y’all.)

where Constraints

The Case of the Unexpected Pax

It was late afternoon of a chill November in Paris. I was walking along the quai, lost in a brown study. Looking up, I saw my friend C. Auguste Dupin approaching me.

"Ah, bon soir, mon ami," said Dupin, "and what brings you beside the Seine on this crisp evening?"

"Something has been puzzling me," I replied, "and I thought the walk would give my thoughts an opportunity to put themselves in order."

"It is a day of puzzlements, no? Will you not share your puzzlement with me?"

"Well," I demurred, "it is a small thing -- probably something I did to myself. But I do not wish to intrude on your time."

"Ah, but it is no intrusion for a friend."

"Well," I said as we turned across the Pont Neuf, "as you know I dabble in Perl, and I like to keep a variety of systems available for testing purposes. I upgraded one of these and was re-installing Perl, when one single module failed to install -- indeed, failed to unpack."

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.