In IO::Spec::Win32§

See primary documentation in context for method basename

method basename(Str:D $path --> Str:D)

Takes a path as a string and returns a possibly-empty portion after the last slash or backslash:

IO::Spec::Win32.basename("foo/bar/".raku.say# OUTPUT: «""␤» 
IO::Spec::Win32.basename("foo/bar\\").raku.say# OUTPUT: «""␤» 
IO::Spec::Win32.basename("foo/bar/.").raku.say# OUTPUT: «"."␤» 
IO::Spec::Win32.basename("foo/bar")  .raku.say# OUTPUT: «"bar"␤»

In IO::Spec::Unix§

See primary documentation in context for method basename

method basename(Str:D $path --> Str:D)

Takes a path as a string and returns a possibly-empty portion after the last slash:

IO::Spec::Unix.basename("foo/bar/".raku.say# OUTPUT: «""␤» 
IO::Spec::Unix.basename("foo/bar/.").raku.say# OUTPUT: «"."␤» 
IO::Spec::Unix.basename("foo/bar")  .raku.say# OUTPUT: «"bar"␤»

In IO::Path§

See primary documentation in context for method basename

method basename(IO::Path:D:)

Returns the basename part of the path object, which is the name of the filesystem object itself that is referenced by the path.

"docs/README.pod".IO.basename.say# OUTPUT: «README.pod␤» 
"/tmp/".IO.basename.say;           # OUTPUT: «tmp␤»

Note that in IO::Spec::Win32 semantics, the basename of a Windows share is \, not the name of the share itself:

IO::Path::Win32.new('//server/share').basename.say# OUTPUT: «\␤»