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.
Поддерживается Кен Уильямсом <KWILLIAMS@cpan.org>
АВТОРСКИЕ ПРАВА
Авторские права (c) 2004 Perl 5 Porters. Все права защищены.
Эта программа является свободным программным обеспечением; вы можете распространять и/или изменять ее на тех же условиях, что и Perl сам по себе.
Части C-кода в этой библиотеке имеют авторские права (c) 1994 Калифорнийский университет. Все права защищены. Лицензия на этот код совместима с лицензией остальной части дистрибутива — подробности см. в исходном коде в файле 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.30.3/Cwd