in reply to Why should I use perl 5.10?

I've been meaning to try Perl 5.10 for a while ... and I'm glad to say() that I finally have.

The things I was mostly looking forward to were state, the builtin switch statement, the // operator and say.

However, today I very happily discovered that Perl 5.10 eliminates my previously number one complaint about error messages.

A colleague asked me today whether I knew of a way to find which variable was undefined in a line containing a string composed of many variables.  On the off-chance that this was better handled in 5.10 (which I hadn't yet read about), I tried a sample program in Perl 5.10, and was pleasantly surprised to find that:

use strict; use warnings; my $a = 1; my $b = 1; my $c = 1; my $d; my $e = 1; my $f = 1; my $g = 1; my $h = 1; print "$a$b$c$d$e$f$g$h\n";

Run this with Perl 5.8.0 and you get:

Use of uninitialized value in concatenation (.) or string at x.pl line + 14. 1111111

Whereas with Perl 5.10.0:

Use of uninitialized value $d in concatenation (.) or string at x.pl l +ine 14. 1111111

It's a minor textual difference, but a huge difference diagnostically!

I'm very happy to upgrade to Perl 5.10!


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/