Thanks for your reply. I very much like TIMTOWTDI, but I also like best practices (see also Tim Toady Bicarbonate). As I said, for small pieces of code that you have complete control over, you probably won't run into any of the described issues. But as an application grows, I imagine it would be harder and harder to keep track of all the potential issues.
Nitpicking on the HMD/HND example: It gives a compile time error, too.
Nope, I tested before posting :-)
$ perl -wMstrict -le 'open local *HMD, ">", \(my $x) or die $!;
print HND "Foo"; close HND; print "Done"'; echo $?
Name "main::HMD" used only once: possible typo at -e line 1.
print() on unopened filehandle HND at -e line 2.
Done
0
$ perl -wMstrict -le 'open my $hmd, ">", \(my $x) or die $!;
print $hnd "Foo"; close $hnd; print "Done"'; echo $?
Global symbol "$hnd" requires explicit package name (did you forget to
+ declare "my $hnd"?) at -e line 2.
Global symbol "$hnd" requires explicit package name (did you forget to
+ declare "my $hnd"?) at -e line 2.
Execution of -e aborted due to compilation errors.
255