std.dirname
Available inall subroutines.
Breaks a pathname into the directory component and returns it. A pathname is a
forward slash-separated list of directory names followed by either a directory
name or a filename. Trailing /
characters are not counted as part of the
pathname. Both relative and absolute pathnames are allowed. Relative pathnames
may use a single dot (.) or double dots (..) to represent the current directory
or the parent directory respectively.
In the usual case, std.dirname
returns the string up to, but not including,
the final /
: for example, std.dirname("/foo/bar/foobar")
is "/foo/bar"
.
If the pathname does not contain a forward slash, then std.dirname
returns
the string "."
: for example, std.dirname("foo")
is "."
.
If the pathname only contains one or more forward slashes, then std.dirname
returns the string "/"
: for example, std.dirname("/")
is "/"
.
If the pathname is an empty string ""
, then std.dirname
returns the string
"."
. The same behavior applies if std.dirname
is invoked with a not-set
header for the pathname: for example, std.dirname(req.http.Not-Set)
is "."
.
See std.basename
for breaking a pathname
into the filename component. The documentation also includes an example of how
to use std.dirname
and std.basename
together to concatenate a complete pathname.
This function conforms to POSIX.1-2001.
Examples
std.dirname("") # returns "."std.dirname("/usr/lib") # returns "/usr"std.dirname("/usr/") # returns "/"std.dirname("usr") # returns "."std.dirname("/") # returns "/"std.dirname(".") # returns "."std.dirname("..") # returns "."