Перемещение по дереву каталогов

Программа имеет определенный «рабочий каталог», который является отправной точкой для построения относительных путей. Иначе говоря, когда вы ссылаетесь на файл fred, имеется в виду файл fred в текущем рабочем каталоге. Рабочий каталог меняется оператором chdir. Команда работает практически так же, как команда cd командного процессора UNIX:

chdir "/etc" or die "cannot chdir to /etc: $!";

Так как смена каталога осуществляется системной функцией, при возникновении ошибки будет задано значение $!. Обычно $! проверяется при получении от chdir значения false, потому что это указывает на возникновение каких-то сбоев. Рабочий каталог наследуется всеми процессами, запущенными Perl. С другой стороны, изменение рабочего каталога не влияет на процесс, запустивший Perl, например командный процессор. Это означает, что вы не сможете написать программу Perl, заменяющую команду cd командного процессора. Если параметр не указан, Perl определяет домашний каталог, насколько у него это получится, и пытается назначить его рабочим каталогом (по аналогии с командой cd, введенной в командном процессоре без параметров). Это одно из немногих мест, в которых по умолчанию не используется переменная $_.

Некоторые командные процессоры позволяют включать в команду cd путь с префиксом ~, чтобы использовать в качестве отправной точки домашний каталог другого пользователя (например, cd ~merlyn). Это функция командного процессора, а не операционной системы, а Perl вызывает функции операционной системы напрямую, поэтому префикс ~ не работает с chdir.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Альтернативный синтаксис глобов
Глобы
Дескрипторы каталогов
Изменение временных меток
Изменение разрешений

Вернуться в раздел: Perl / 12. Операции с каталогами