Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where are some good resources for learning the new features of Perl 5.10?

Tags:

perl

perl5.10

I didn't realize until recently that Perl 5.10 had significant new features and I was wondering if anyone could give me some good resources for learning about those. I searched for them on Google and all I found was some slides and a quick overview. Some of the features (to me at least) would be nice if they had more explanation.

Any links would be appreciated.

-fREW

like image 863
Frew Schmidt Avatar asked Oct 03 '08 19:10

Frew Schmidt


2 Answers

The perldelta manpage has all the nitty-gritty details. There's a brief (but informative) slide presentation, Perl 5.10 for people who aren't totally insane. And a good PerlMonks discussion on the issue.

like image 162
friedo Avatar answered Oct 13 '22 19:10

friedo


I found this article useful.

This one is more focused on 5.10 Advanced Regular Expressions.

And also A beginners' Introduction to Perl 5.10.

Finally, this excellent summary on why you should start using Perl 5.10 and from which I extracted the following:

  • state variables No more scoping variables with an outer curly block, or the naughty my $f if 0 trick (the latter is now a syntax error).
  • defined-or No more $x = defined $y ? $y : $z, you may write $x = $y // $z instead.
  • regexp improvements Lots of work done by dave_the_m to clean up the internals, which paved the way for demerphq to add all sorts of new cool stuff.
  • smaller variable footprints Nicholas Clark worked on the implementations of SVs, AVs, HVs and other data structures to reduce their size to a point that happens to hit a sweet spot on 32-bit architectures
  • smaller constant sub footprints Nicholas Clark reduced the size of constant subs (like use constant FOO => 2). The result when loading a module like POSIX is significant.
  • stacked filetests you can now say if (-e -f -x $file). Perl 6 was supposed to allow this, but they moved in a different direction. Oh well.
  • lexical $_ allows you to nest $_ (without using local).
  • _ prototype you can now declare a sub with prototype . If called with no arguments, gets fed with $ (allows you to replace builtins more cleanly).
  • x operator on a list you can now say my @arr = qw(x y z) x 4. (Update: this feature was backported to the 5.8 codebase after having been implemented in blead, which is how Somni notices that it is available in 5.8.8).
  • switch a true switch/given construct, inspired by Perl 6
  • smart match operator (~~) to go with the switch
  • closure improvements dave_the_m thoroughly revamped the closure handling code to fix a number of buggy behaviours and memory leaks.
  • faster Unicode lc, uc and /i are faster on Unicode strings. Improvements to the UTF-8 cache.
  • improved sorts inplace sorts performed when possible, rather than using a temporary. Sort functions can be called recursively: you can sort a tree
  • map in void context is no longer evil. Only morally.
  • less opcodes used in the creation of anonymous lists and hashes. Faster pussycat!
  • tainting improvements More things that could be tainted are marked as such (such as sprintf formats)
  • $# and $* removed Less action at a distance
  • perlcc and JPL removed These things were just bug magnets, and no-one cared enough about them.
like image 44
David Segonds Avatar answered Oct 13 '22 20:10

David Segonds