Month: December 2007

Code broken by regex fixes in 5.10.0, or, why it’s good to help test release candidates

December 20, 2007 Regexes 5 comments

My baby, ack, broke under Perl 5.10.0, because of a fix in regex behavior that I had been using unknowingly. See, I had always used my regex objects like this:

my $re = qr/^blah blah/;
if ( $string =~ /$re/sm )...

when I should have been using it like this:

my $re = qr/^blah blah/sm;
if ( $string =~ /$re/ )...

The bug in 5.8.x is that the /$re/sm would incorrectly apply the /sm modifiers to $re. This made the code happen to work, but for the wrong reason. What was especially tricky about finding my bug was that in 5.10.0, the call to /$re/sm ignores the /sm, but doesn’t tell you that.

After some back and forth on p5p, a patch was submitted that gave the warning about the ignored /sm flags, but alas, Perl 5.10 was already out. It wouldn’t have been so bad if it hadn’t been the day AFTER it was released.

So, lesson learned: Test your code against new release candidates of Perl, both for your code’s sake, AND for Perl’s sake.

And y’know, now that I think of it, this is probably a great policy for Perl::Critic just waiting to happen. I wonder how many other people are doing their regexes the wrong way, too.

Perl birthday parties across North America

December 20, 2007 Community No comments

Richard Dice writes to tell:

The Toronto Perl Mongers meet monthly for a combined technical and social meeting — except in December, when the meeting is purely social. To celebrate the 20th birthday of Perl we scheduled our December 2007 meeting for the 18th. Richard Dice brought a special cake. (It was chocolate, not onion-flavoured as some people feared.) Rough 20 Mongers came out to the event. Fun – and cake! – was had by all. We hope Mongers world-wide enjoy some of the photos taken of the event.



And on the other side of North America, Andy Sweger writes about the Seattle Perl Mongers’ celebration:

At the regular monthly SPUG meeting on December 18th, 2007,
we had a little celebration for Perl’s 20th birthday which
just happened to be on the same day. We had a lovely cake
and we sang happy birthday to
Perl
for Larry. (Don’t mind the bit about Perl
6, Larry. That guy just had too much cake.)

Perl 5.10 now available

December 19, 2007 Perl 5, Perl Foundation 9 comments

Today the Perl Foundation
announces the release of Perl 5.10, the
first major upgrade to the wildly popular dynamic programming
language in over five years. This latest version builds on the
successful 5.8.x series by adding powerful new language features
and improving the Perl interpreter itself. The Perl development
team, called the Perl Porters, has taken features and inspiration
from the ambitious Perl 6
project, as well as from chiefly academic languages and blended
them with Perl’s pragmatic view to practicality and usefulness.

Significant new language features

The most exciting change is the new smart match operator.
It implements a new kind of
comparison, the specifics of which are contextual based on the
inputs to the operator. For example, to find if scalar $needle is in array @haystack,
simply use the new ~~ operator:

if ( $needle ~~ @haystack ) ...

The result is that all comparisons now
just Do The Right Thing, a hallmark of Perl programming.
Building on the smart-match operator, Perl finally gets a
switch statement
, and it goes far beyond the kind
of traditional switch statement found in languages like
C, C++ and Java.

Regular expressions are now far more powerful. Programmers
can now use named captures in regular expressions, rather than counting parentheses for
positional captures. Perl 5.10 also supports recursive patterns,
making many useful constructs, especially in parsing, now possible.
Even with these new features, the regular expression engine has
been tweaked, tuned and sped up in many cases.

Other improvements include state variables that allow variables to
persist between calls to subroutines; user defined pragmata that
allow users to write modules to influence the way Perl behaves; a
defined-or operator; field hashes for inside-out objects and
better error messages.

Interpreter improvements

It’s not just language changes. The Perl interpreter itself is
faster with a smaller memory footprint, and has several UTF-8 and
threading improvements. The Perl installation is now
relocatable
, a blessing for systems administrators and operating
system packagers. The source code is more portable, and of course many
small bugs have been fixed along the way. It all adds up to the best
Perl yet.

For a list of all changes in Perl 5.10, see Perl 5.10’s perldelta document included
with the source distribution. For a gentler introduction of just the high points, the slides for
Ricardo Signes’ Perl 5.10 For People Who Aren’t Totally Insane talk are well worth reading.

Don’t think that the Perl Porters are resting on their laurels.
As Rafael Garcia-Suarez, the release manager for Perl 5.10, said:
“I would like to thank every one of the Perl Porters for their
efforts. I hope we’ll all be proud of what Perl is becoming, and
ready to get back to the keyboard for 5.12.”

Where to get Perl

Perl is a standard feature in almost every operating system today
except Windows. Users who don’t want to wait for their operating
system vendor to release a package can dig into Perl 5.10 by
downloading it from CPAN, the Comprehensive Perl Archive Network,
at http://search.cpan.org/dist/perl/,
or from the Perl home page at www.perl.org.

Windows users can also take advantage of the power of Perl by
compiling a source distribution from CPAN, or downloading one of
two easily installed binary distributions.
Strawberry Perl is a community-built
binary distribution for Windows, and
ActiveState‘s distribution is
free but commercially-maintained.

Editor’s notes

For questions, contact Perl Foundation Public Relations at
pr@perlfoundation.org.

Perl:
perl.org
Perl is a dynamic programming language created by Larry Wall and
first released in 1987. Perl borrows features from a variety of
other languages including C, shell scripting (sh), AWK, sed and
Lisp. It is distributed with practically every version of Unix
available and runs on a huge number of platforms, as diverse as
Windows, Mac OS X, Solaris, z/OS, os400, QNX and Symbian.

Rafael Garcia-Suarez
email: rgarciasuarez@gmail.com
Rafael Garcia-Suarez is a French software engineer who lives in Paris,
France, and who is currently employed by Booking.com. He has been a
contributor to Perl for many years and has stewarded the birth of
Perl 5.10 for the last few.

The Perl Foundation
perlfoundation.org
The Perl Foundation is dedicated to the advancement of the Perl
programming language through open discussion, collaboration, design,
and code. It is a non-profit, 501(c)(3) organization incorporated
in Holland, Michigan, USA in 2000.

This is a copy of the official announcement about Perl 5.10.

ActiveState provides Windows binaries of Perl 5.10.0

December 18, 2007 Perl 5 1 comment

ActiveState already has their Perl for Windows available for binary download. I’m sure Strawberry Perl won’t be far behind.

There is no zeroth century

December 18, 2007 Uncategorized No comments

From the PostgreSQL date functions reference:

The first century starts at 0001-01-01 00:00:00 AD, although they did not know it at the time. This definition applies to all Gregorian calendar countries. There is no century number 0, you go from -1 to 1. If you disagree with this, please write your complaint to: Pope, Cathedral Saint-Peter of Roma, Vatican.

Tomorrow’s a big day!

December 17, 2007 Uncategorized 6 comments

Tomorrow is a big day for our little language. Stay tuned for news.

tpf-onion-cake.jpg

What sane person would want ASCII order?

December 15, 2007 Uncategorized No comments

Jeff Atwood, whose blog Coding Horror is always worth reading, has a great post about natural sorting order vs. ASCIIbetical sorting order.

Users will inevitably complain that their items aren’t sorting properly, and file bugs on these “errors”…. [W]e programmers produce a weary sigh, and try to keep any obvious eye-rolling in check as we patiently inform our users that this isn’t an error. Items are sorting in proper order. Proper ASCII order, that is. As we’re walking away, hopefully you won’t hear us mutter under our breath what we’re actually thinking– “Stupid users! They don’t even understand how sorting works!”

Bravo for poking more holes in the tendency programmers have to think they know best.

Wanted: Dark Lord of Destruction

December 13, 2007 Business 1 comment

Message Systems is looking for a Perl QA and stress-testing engineer, but they don’t call it that. They’re looking for a Dark Lord Of Destruction. I hope they accept applications for Dark Lady Of Destruction as well.

You DID know about jobs.perl.org, didn’t you? It’s a free job listing service for Perl-related jobs, plus, you can help support the Perl Foundation by buying featured placement on the front page for a few hundred dollars.

Movable Type is now open source

December 12, 2007 Uncategorized 3 comments

Six Apart announced today that Movable Type is now open source. They say that MTOS has every feature in Movable Type 4.0, which I think is a change. It’ll be interesting to see if/how this changes Movable Type’s share in the blogging community, since WordPress has always been able to wave the open source flag. I also might go and take a look at the source, which I’ve never examined because I knew there was no reason to.

64-bit Macs may have CPAN build problems

December 11, 2007 CPAN, Perl 5 No comments

Mac OS X Leopard’s Perl builds 32-bit Universal binaries by default, which may cause conflicts on 64-bit Macs with 64-bit apps like Apache 2.0.
This article on Ars Technica gives the details, and the ARCHFLAGS fix.