Channels ▼

Web Development

Perl News

April, 2004: Perl News

Apocalypse 12 Unleashed

Apocalypse 12, a 20-page essay addressing the Perl 6 object model, is now upon us. This is the latest Apocalypse since Apocalypse 7, which consisted of just two sentences. As Larry explained on the perl6-language list, the Apocalypses are numbered in order of their importance to Perl 5, but they're being written in order of their importance to Perl 6. Therefore, Apocalypses 8 through 11—covering References, Data Structures, Packages, and Modules—have been skipped for the time being.

"What we're proposing," Larry writes, "is to develop a set of conventions for how object orientation ought to work in Perl 6—by default. But there should also be enough hooks to customize things to your heart's content, hopefully without undue impact on the sensibilities of others. And in particular, there's enough flexibility in the new approach that, if you want to, you can still program in a way much like the old Perl 5 approach."

The full text of Apocalypse 12 is at a/2004/04/16/a12.html.

Perl 5.8.4 Nears Release

As of press time, Perl 5.8.4 has made it to Release Candidate 2, as RC1 had unexpected problems installing suidperl. Barring further surprises, the final 5.8.4 release should be out within a few days.

Suidperl had to be changed to fix a security vulnerability. Although backwards compatibility with scripts that invoke #!/usr/bin/suidperl has been preserved, the perldata warns: "For new projects, the core perl team would strongly recommend that you use dedicated, single purpose security tools such as sudo in preference to suidperl." Perl 5.8.4 also fixes another security hole involving attempts to assign unreasonably large amounts of memory, which would previously crash perl, potentially opening up a "stack smashing" vulnerability.

The Perl Foundation Awards New Grant

The Perl Foundation has announced a new development grant: Simon Cozens has been awarded $1000 to work on Maypole, a Model-View-Controller (MVC) framework for web applications. Maypole is designed as a Perl equivalent to Jakarta's Struts framework. (See Simon's article on Maypole in this issue.) As Simon writes on, "Many web applications follow the same kind of flow of operation: In response to a request from a user, they mess about with a database, and present the results of that messing about back to the user through some templating system...Maypole provides a generic way of handling that compartmentalisation." Bottom line: "It means you can write fully featured interfaces to a database in less than 20 lines of code."

Maypole is currently in Version 1.4 (available from CPAN); the Perl Foundation grant will go towards developing view and template classes for HTML::Mason and DBIx::SearchBuilder, as well as finishing the Maypole documentation and producing example sites. Existing Maypole users are encouraged to get involved; there's a mailing list accessible at listinfo/maypole/.

MySQL Issues License Exception

MySQL AB has solved a potential problem for DBD::mysql users by issuing a specific exemption to the license under which MySQL client libraries are distributed. As of MySQL 4.0, these client libraries were distributed under the GPL rather than the LGPL, which raised problems for developers who work with Perl, PHP, or other languages distributed under nonGPL licenses. The issue came to a head when the PHP packagers removed the MySQL client libraries from PHP 5.

MySQL AB's exemption, published at products/licensing/foss-exception.html, specifies that applications distributed under any one of 18 open-source licenses—including Perl's Artistic license—are free to incorporate MySQL client libraries without changing their own license terms. It's formally termed the MySQL FOSS (Free and Open Source Software) License Exception.


Andy Adler has discovered a problem in the code he presented in his article on Inline::Octave in last month's TPJ. According to Andy:

Mea culpa. I made a mistake in the code presented in 'Perl and Inline Octave Code,' which meant that the '' code would hang in some situations. The short solution is that I've released a new version (0.21) of <i>Inline::Octave</i>, which fixes the bug.
     For those interested in more detail: Since <i>Inline::Octave</i> starts a child (Octave) process, it would like to know if it dies for any reason. Therefore, it sets <i>$SIG{CHLD} </i>and <i>$SIG{PIPE}</i> to handle this event. Unfortunately, the module user may well be starting child processes (such as 'unzip,' in the example given) or setting signal handlers. In the example, the user's child process termination got caught by the wrong handler. In order to solve this problem, <i>Inline::Octave</i> now only sets signal handlers (using <i>local</i>) immediately before any interaction with 'Octave' and allows them to be reset afterwards.
     Sorry for any inconvenience. If nothing else, I've managed to point out that this kind of IPC can be tricky.
—Andy Adler

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.