Available inall subroutines.

Breaks a pathname into the filename 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.basename returns the component following the final /: for example, std.basename("/foo/bar/foobar") is "foobar".

If the pathname does not contain a forward slash, then std.basename returns a copy of the pathname: for example, std.basename("foo") is "foo".

If the pathname only contains one or more forward slashes, then std.basename returns the string "/": for example, std.basename("/") is "/".

If the pathname is an empty string "", then std.basename returns the string ".". The same behavior applies if std.basename is invoked with a not-set header for the pathname: for example, std.basename(req.http.Not-Set) is ".".

Concatenating the string returned by std.dirname, a "/", and the string returned by std.basename yields a complete pathname.

For example, std.dirname("") "/" std.basename("") is "".

See std.dirname for breaking a pathname into the directory component.

This function conforms to POSIX.1-2001.


std.basename("") # returns "."
std.basename("/usr/lib") # returns "lib"
std.basename("/usr/") # returns "usr"
std.basename("usr") # returns "usr"
std.basename("/") # returns "/"
std.basename(".") # returns "."
std.basename("..") # returns ".."