|
Source: ONLamp.com Jon Allen announced that http://perldoc.perl.org/ has been updated with Perl 5.10 documentation. This is great news as the look of the rendered PODs with syntax highlighting and many other nice effects makes me feel good.
Source: ONLamp.com Damien Seguy just sent me more stats on the versions of PHP in the wild. From their analysis of PHP Statistics for November 2007:
PHP 5 still vigourous, up to 26% PHP 4.4.7 is the last growing PHP 4 version PHP 5.2 will take over PHP 4.3 in the next months
With support for PHP 4 ending in a couple of weeks, hopefully the 50% or so of PHP installations running PHP 4 or earlier will take the opportunity to migrate. (See the PHP 4 to PHP 5 migration guide.)
In a related note, I really like the plush PHP elePHPant.
Source: ONLamp.com Another article of the series “Yet Another Perl 6 Operator” Perl 6 provides an operator 'X', the cross operator, which combines its list operands into a sort of cartesian product of these arguments.
1,2 X 3,4 # (1,3), (1,4), (2,3), (2,4)
1,2 X 3,4 X 5,6 # (1,3,5), (1,3,6), (1,4,5), , (2,4,6)
The 'X' operator returns all possible lists formed by taking one element from each of its list arguments. The ordering of the returned lists is such that the rightmost elements vary fastest. Hence,
X (1,2)
ends up with
('a', 1), ('a', 2), ('b', 1), ('b', 2)
where the first elements come from and the second elements from (1,2).
In @ (list) context, the result becomes a flat list, while in @@ (splice) context it turns into a list of arrays.
say @( X 1,2) 'a', 1, 'a', 2, 'b', 1, 'b', 2 say @@( X 1,2) ['a', 1], ['a', 2], ['b', 1], ['b', 2]
The operator is list associative, so that @a X @b X @c produce a list of three-element lists. If any of the lists is empty, you will end up with a null list.
The cross operator also plays nicely with unbounded lists. But only the leftmost argument can be usefully an infinite list, or else some elements (other than the first ones of the next arguments) will never be seen.
Just like the zip operator, the cross operator provides a handy operation on lists avoiding the need to code it with basic operations (like nested loops or maps). That avoids the need for clustered low-level coding when implementing some high-level algorithms.
For instance, data structures like rectangular boards can be generated from simple Perl 6 expressions, like:
# tic-tac-toe slots 0..^3 X 0..^3
# chess board squares 'a'..'h' X 1..8
Next article is due next Monday (Dec 24, 2007).
LINKS
The zip operator
Synopsis S03, the official source
The introduction of this series
Official Perl 6 Documentation
Perl 6 in your browser

Source: ONLamp.com This is a copy of the official announcement about Perl 5.10.
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. ActiveState’s distribution is available now, and Strawberry Perl’s is imminent.
|