I wonder how many of you have honestly tried to employ 'use strict' for your serious programs? I know that I do, and I teach my classes to do so as well. With 5.001 and being able to put my()s at the outer scope, have nested scope work right for subs and formats, I believe it's a highly worthwhile mechanism, and I encourage you all to endeavour to do so. However, it has some problems. 1) Variables imported from another module still require being fully qualified. This is a problem. I think the old 5.000 behaviour of variables put into the main symbol prior to use strict was quite fine. 2) The $_ variable cannot be my()d, and it is exempt from needing to be fully qualified *or* localized. This is dangerous. 3) Formats are not all exempt the way subroutines are, but they should be. So, perhaps, should all filehandles. Consider that STDOUT for a format is ok because it's the name of a global filehandle, but you have to say format ::STDOUT_TOP. 4) The way sort always mucks with $main::a and $main::b means that you have to use them that way. Saying my($a, $b); sort { $a <=> $b } @x; Doesn't help. The sort didn't see the my, and even if it did, I'm not sure it would help. 5) The implicit extra my in a foreach() loop really breaks things. my $elt; format STDOUT = @<<<<< $elt . for $elt (@list) { write; } That won't work, because the $elt ref the format was compiled with isn't the same one as the foreach() loop makes. This is highly bad. It also probably means that closures on subroutines will be wrong. I believe someone else mentioned it recently, but the extra implied my() doesn't help here. 6) If you have a my variable in block, you'll have a similar problem: for (1..10) { my $x = 'foo ' x 100; format STDOUT = @<<<< ^<<<<<<<<<<< $_, $x ~~ ^<<<<<<<<<<< $x . write; } See what's happening? Which my $x changes out from under the format!