Cwd
СОДЕРЖАНИЕ
НАЗВАНИЕ
Cwd — получение пути текущей рабочей директории
СИНТАКСИС
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file); ОПИСАНИЕ
Этот модуль предоставляет функции для определения пути текущей рабочей директории. Рекомендуется использовать getcwd (или другую функцию *cwd()) во всех фрагментах кода для обеспечения портативности.
По умолчанию он экспортирует функции cwd(), getcwd(), fastcwd(), и fastgetcwd() (и, на Win32, getdcwd()) в пространство имён вызывающей стороны.
getcwd и аналогичные функции
Каждая из этих функций вызывается без аргументов и возвращает абсолютный путь текущей рабочей директории.
- getcwd
-
my $cwd = getcwd();Возвращает текущую рабочую директорию. В случае ошибки возвращает
undef, при этом$!устанавливается для указания ошибки.Вызывает функцию POSIX getcwd(3) или повторно реализует её, если она недоступна.
- cwd
-
my $cwd = cwd();Функция cwd() является наиболее естественной формой для текущей архитектуры. Для большинства систем она идентична `pwd` (но без заключительного символа новой строки).
- fastcwd
-
my $cwd = fastcwd();Более опасная версия getcwd(), но потенциально более быстрая.
Она может, теоретически, переместить вас в директорию, из которой невозможно вернуться. Если fastcwd обнаруживает проблему, она вернёт undef, но, вероятно, оставит вас в другой директории. Для повышения безопасности, если всё прошло успешно, функция fastcwd() проверит, что она оставила вас в той же директории, в которой она начала. Если она изменилась, она
dieс сообщением "Нестабильный путь к каталогу, текущая директория неожиданно изменилась". Этого никогда не должно происходить. - fastgetcwd
-
my $cwd = fastgetcwd();Функция fastgetcwd() предоставляется как синоним для cwd().
- getdcwd
-
my $cwd = getdcwd(); my $cwd = getdcwd('C:');Функция getdcwd() также предоставляется на Win32 для получения текущей рабочей директории на указанном диске, поскольку Windows поддерживает отдельную текущую рабочую директорию для каждого диска. Если диск не указан, предполагается текущий диск.
Эта функция просто вызывает функцию библиотеки Microsoft C _getdcwd().
abs_path и аналогичные функции
Эти функции экспортируются только по запросу. Каждая из них принимает один аргумент и возвращает абсолютный путь для него. Если аргумент не указан, они используют текущую рабочую директорию.
- abs_path
-
my $abs_path = abs_path($file);Использует тот же алгоритм, что и getcwd(). Символические ссылки и компоненты относительных путей (".", "..") разрешаются для возвращения канонического пути, точно так же, как realpath(3). В случае ошибки возвращает
undef, при этом$!устанавливается для указания ошибки. - realpath
-
my $abs_path = realpath($file);Синоним для abs_path().
- fast_abs_path
-
my $abs_path = fast_abs_path($file);Более опасная, но потенциально более быстрая версия abs_path.
$ENV{PWD}
Если вы попросите переопределить встроенную функцию chdir(),
use Cwd qw(chdir); то ваша переменная окружения PWD будет поддерживаться в актуальном состоянии. Обратите внимание, что она будет поддерживаться в актуальном состоянии только в том случае, если все пакеты, использующие chdir, импортируют её из Cwd.
ПРИМЕЧАНИЯ
-
Поскольку разделители путей отличаются на некоторых операционных системах ('/' на Unix, ':' на MacPerl и т. д.), мы рекомендуем использовать модули File::Spec там, где актуальна портативность.
-
На самом деле, в Mac OS функции
getcwd(),fastgetcwd()иfastcwd()являются псевдонимами для функцииcwd(), которая в Mac OS вызывает `pwd`. Аналогично, функцияabs_path()является псевдонимом дляfast_abs_path().
АВТОР
Изначально разработан perl5-porters.
Поддерживается Ken Williams <KWILLIAMS@cpan.org>
АВТОРСКИЕ ПРАВА
Авторские права (c) 2004 Perl 5 Porters. Все права защищены.
Эта программа является свободной программой; вы можете перераспределять и/или изменять её на тех же условиях, что и Perl сам.
Часть C-кода в этой библиотеке защищена авторским правом (c) 1994 Regents of the University of California. Все права защищены. Лицензия на этот код совместима с лицензией остальной части дистрибутива — см. исходный код в файле Cwd.xs для подробностей.
СМОТРИТЕ ТАКЖЕ
© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.28.3/Cwd