Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should I use a lexical directory handle with opendir in Perl?

Tags:

perl

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?

like image 543
Robert P Avatar asked Oct 02 '09 16:10

Robert P


2 Answers

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

like image 164
ire_and_curses Avatar answered Oct 15 '22 11:10

ire_and_curses


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

like image 20
Adam Bellaire Avatar answered Oct 15 '22 09:10

Adam Bellaire