```{index} single: getcwd (Cwd) ``` ```{index} single: Cwd::getcwd ``` # getcwd Return the absolute path of the process's current working directory. ## Synopsis ```perl use Cwd; my $dir = getcwd(); my $dir = cwd(); my $dir = fastcwd(); my $dir = fastgetcwd(); ``` ## What you get back A plain Perl string: the absolute path, no trailing newline, no trailing slash (except when you really are at the root `/`). On failure `getcwd` and `fastcwd` return `undef` and set `$!`. ## Examples Print where the script is running from: ```perl use Cwd; print getcwd(), "\n"; # e.g. /home/alice/project ``` Save and restore the working directory around a block that `chdir`s: ```perl use Cwd; my $saved = getcwd(); chdir '/tmp' or die $!; # ... do work in /tmp ... chdir $saved or die $!; ``` Compare two paths by their canonical form: ```perl use Cwd; chdir '/var/log' or die $!; print getcwd() eq '/var/log' ? "yes\n" : "no\n"; # yes ``` ## Edge cases - If the current directory has been removed by another process, `getcwd` and `fastcwd` return `undef` with `$!` set to `ENOENT`, while `cwd` (the output of `/bin/pwd`) is the empty string. - Symlinks in the path are already resolved by the kernel's `getcwd(3)`; the returned string is the real path. - All four names are provided by default when you `use Cwd` with no import list. - `fastcwd` takes no arguments. - Under taint mode the result is tainted. ## See also - `abs_path` - canonicalise an arbitrary path, not just the CWD - `realpath` - POSIX-style alias for `abs_path`