Spec-Zone.ru › Perl 5.32

Cwd

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
    • getcwd и аналогичные функции
    • abs_path и аналогичные функции
    • $ENV{PWD}
  • ПРИМЕЧАНИЯ
  • АВТОР
  • АВТОРСКИЕ ПРАВА
  • СМОТРИТЕ ТАКЖЕ

ИМЯ

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.

Поддерживается Кен Уильямсом <KWILLIAMS@cpan.org>

АВТОРСКИЕ ПРАВА

Авторские права (c) 2004 Perl 5 Porters. Все права защищены.

Эта программа является свободным программным обеспечением; вы можете распространять и/или изменять ее на тех же условиях, что и Perl сам по себе.

Части C-кода в этой библиотеке имеют авторские права (c) 1994 Калифорнийский университет. Все права защищены. Лицензия на этот код совместима с лицензией остальной части дистрибутива — подробности см. в исходном коде в файле Cwd.xs.

СМОТРИТЕ ТАКЖЕ

File::chdir

© 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.30.3/Cwd

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API