Perl практика

         

Чтение дескриптора каталога.


Используется вызов readdir, который возвращает следующее имя файла или undef

opendir(ETC, "/etc") die "cannot opendir /etc:$!"; while(defined($name = readdir(ETC))) { print "$name\n"; } closedir(ETC);

Или в отсортированном порядке

opendir(ETC, "/etc") die "cannot opendir /etc:$!"; foreach $name (sort readdir(ETC)) { print "$name\n"; } closedir(ETC);



Доступ к каталогам.


Пример:

chdir("/etc") die "cannot cd to /etc ($!)";

print "where do you want to go? "; chomp($where = <STDIN&gt); if(chdir $where) { # OK } else { # NOT }



Открытие и закрытие дескриптора каталога.


opendir(ETC, "/etc") die "cannot opendir /etc:$!";

closedir(ETC);



Развертывание.


Преобразование аргументов вроде * или /etc/host* - в список имен файлов называется развертыванием (globbing). В PERL подлежащий развертыванию образец заключается в угловые скобки или используется функция glob().

@a = </etc/host*> @a = glob("/etc/host*");



В списочном контексте результатом является список, в скалярном - следущее совпадаущее имя.

while(defined($nextname = </etc/host*&gt)) { print "one of the files is $nextname\n"; }

В аргументе glob производится интерполяция:

if(-d "/usr/etc") { $where = "/usr/etc"; } else { $where = "/etc"; } @files = <$where/*>