Доступ к каталогам.
Пример:
chdir("/etc") || die "cannot cd to /etc ($!)";
print "where do you want to go? ";
chomp($where = <STDIN>);
if(chdir $where) {
# OK
} else {
# NOT
}
Преобразование аргументов вроде * или /etc/host* - в список имен
файлов называется развертыванием (globbing). В PERL подлежащий развертыванию
образец заключается в угловые скобки или используется функция glob().
@a = </etc/host*>
@a = glob("/etc/host*");
В списочном контексте результатом является список, в скалярном - следущее совпадаущее
имя.
while(defined($nextname = </etc/host*>)) {
print "one of the files is $nextname\n";
}
В аргументе glob производится интерполяция:
if(-d "/usr/etc") {
$where = "/usr/etc";
} else {
$where = "/etc";
}
@files = <$where/*>
opendir(ETC, "/etc") || die "cannot opendir /etc:$!";
closedir(ETC);
Используется вызов 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);
|