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 ".."

User contributed notes


Do you see an error in this page? Do have an interesting use case, example or edge case people should know about? Share your knowledge and help people who are reading this page! (Comments are moderated; for support, please contact