Cwd#
Report the current working directory and resolve paths to their
absolute, symlink-free form. This module provides the four
“where am I” functions (cwd, getcwd, fastcwd, fastgetcwd),
the three “make this path absolute” functions (abs_path,
realpath, fast_abs_path), and a chdir that keeps
$ENV{PWD} in sync.
Two groups of tradeoffs matter when choosing between them.
Current directory. getcwd is the most portable and safe
call — it asks the kernel via the POSIX getcwd(3) interface and
never leaves the process anywhere surprising. fastcwd walks the
tree with repeated chdir('..') and is faster on deep paths, but
if a parent directory disappears mid-walk (or is unreadable) it
returns undef and may leave the process in a different
directory than it started. cwd picks the most natural form for
the platform; on Linux it is effectively getcwd. fastgetcwd
is a synonym for cwd.
Path resolution. abs_path canonicalises a path, resolving
symlinks and ./.. components. realpath is its POSIX-style
alias — same function, different name. fast_abs_path is the
faster variant that drops the “non-existent leaf” fallback: it
returns undef the moment any component fails to resolve, where
abs_path will still return a usable path when only the final
leaf is missing.
chdir changes directory and, on success, writes the new
absolute path to $ENV{PWD} so child processes inherit a
consistent view.
Functions#
Current directory#
cwd#
Return the absolute path of the process’s current working directory.
chdir#
Change the process’s current working directory, and update $ENV{PWD} to match.
Path resolution#
abs_path#
Canonicalise a path: resolve symlinks, ., and .., and return the absolute form.
fast_abs_path#
Canonicalise a path strictly: resolve symlinks and ./.., or return undef if any component is missing.