Spec-Zone.ru › Perl 5.28

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.

Поддерживается Ken Williams <KWILLIAMS@cpan.org>

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

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

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

Часть C-кода в этой библиотеке защищена авторским правом (c) 1994 Regents of the University of California. Все права защищены. Лицензия на этот код совместима с лицензией остальной части дистрибутива — см. исходный код в файле 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.28.3/Cwd

Spec-Zone.ru

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