Должен ли я использовать лексический дескриптор каталога с opendir в Perl? - PullRequest
5 голосов
/ 02 октября 2009

Почти повсеместно, когда люди публикуют вопросы на SO (или где-либо еще) о Perl и чтении из файлов, если есть какой-либо код, включающий открытый стиль

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

кричит за то, что он не использует лексический дескриптор файла. Как мы все знаем,

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

- это правильный способ открыть дескриптор файла в современном Perl. Как насчет каталогов? В нескольких недавних SO-вопросах люди задавали вопросы, которые включают opendir, и размещали код, такой как

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

Страницы perldoc Показать

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

в качестве примера.

Должны ли мы предлагать людям использовать лексический дескриптор каталога и для opendir?

Ответы [ 3 ]

10 голосов
/ 02 октября 2009

Определенно. Аргумент для лексических дескрипторов файлов для каталогов идентичен аргументу для файлов - область видимости текущего пространства имен.

4 голосов
/ 02 октября 2009

Да, лексические выражения предпочтительны для opendir, а также open.

3 голосов
/ 03 октября 2009

Когда я получу шанс, я исправлю все эти примеры в perldocs. Learning Perl уже использует лексические маркеры в пятом издании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...