Perl, чтобы установить каталог, чтобы открыть, открыть его, а затем распечатать каталог, открытый? - PullRequest
0 голосов
/ 24 февраля 2011

Попытка устранить неполадки порта какого-либо Perl-кода от CentOS до Windows.

Действительно ничего не знаю о Perl, и код, который я портирую, составляет около 700-1000 строк.На 100% уверен, что одна из проблем, с которыми я сталкиваюсь, связана с тем, как код отображается в результате работы в операционной системе.

Итак, я ищу способ устранения неполадок при отладке того, как ОС отображают путь к файлу отдельно от устаревшего кода;которые я не могу опубликовать в SO по причинам «IP».

Итак, я ищу какой-то Perl, который я могу настроить для открытия каталога внутри скрипта (например, C: \ data \ или / home/ data), затем сценарий пытается загрузить каталог, печатает, если это не удалось или успешно, а затем печатает строку, которую он пытался загрузить, независимо от того, не удалось открыть каталог или нет.

Открыт для предложений, но это проблема, и решение, которое я вижу.

Вопросы, отзывы, запросы - просто комментируйте, спасибо !!

Ответы [ 2 ]

1 голос
/ 24 февраля 2011
use IO::Dir;

my $dir = IO::Dir->new($dir_path) or 
   die "Could not open directory $dir_path: $!\n";

конечно, где $ dir_path - это какой-то путь к каталогу в вашей системе, который вы хотите, либо в виде var, либо в жестком коде.Более "старый школьный" способ будет выглядеть следующим образом:

opendir my $dir, $dir_path or die "Could not open directory $dir_path: $!\n";

Если каталог не будет распечатан, он откроется, но если программа не откроется, произойдет сбой программы, а затем будет выведена точная ошибка:почему, что то, что $!переменная содержит.

1 голос
/ 24 февраля 2011

Это то, что вы ищете?

use DirHandle;

my $dir = "test";
my $dh = new DirHandle($dir);

if($dh) {
  print "open directory succeeded\n";
}
else {
  print "open directory failed\n";
}

print $dir, "\n";

new DirHandle открывает каталог и возвращает ему дескриптор. Дескриптор будет undef, если открытие не удалось.

...