tags:

views:

115

answers:

3

Almost universally when people post questions on SO (or elsewhere) about Perl and reading from files, if any code that involves an old-style open

open FH, ">file.txt" or die "Can't open for write, $!";  # OLD way, do not use!

gets yelled at for not using a lexical filehandle. As we all know,

open my $fh, ">", "file.txt" or die "Can't open for write, $!"; # new hotness

is the proper way to open a file handle in modern Perl. What about directory handles? In a few recent SO questions, people have posed questions that involve opendir, and posted code like

opendir DIR, "/directory" or die "Can't get the directory, wtf?! $!"; # ???

The perldoc pages show

opendir(my $dh, $some_dir) || die "can't opendir $some_dir: $!";

as the example.

Should we be suggesting to folks to use a lexical directory handle for opendir as well?

+10  A: 

Definitely. The argument for lexical filehandles for directories is identical to that for files - scoping to the current namespace.

ire_and_curses
+4  A: 

Yes, lexicals are preferred for opendir as well as open.

Adam Bellaire
+3  A: 

When I get the chance, I will be fixing all of those examples in the perldocs. Learning Perl already uses the lexical handles in the fifth edition.

brian d foy