does Positional does Associative does Iterable
An IO::Path::Parts
object is a container for the parts of an IO::Path
object. It is usually created with a call to the method .parts
on an IO::Path
object. It can also be created with a call to the method .split
on an object of one of the low-level path operations sub-classes of IO::Spec
.
The parts of an IO::Path
are:
Methods§
method new§
method new(\volume, \dirname, \basename)
Create a new IO::Path::Parts
object with \volume
, \dirname
and \basename
as respectively the volume, directory name and basename parts.
attribute volume§
Read-only. Returns the volume of the IO::Path::Parts
object.
IO::Path::Parts.new('C:', '/some/dir', 'foo.txt').volume.say;# OUTPUT: «C:»
attribute dirname§
Read-only. Returns the directory name part of the IO::Path::Parts
object.
IO::Path::Parts.new('C:', '/some/dir', 'foo.txt').dirname.say;# OUTPUT: «/some/dir»
attribute basename§
Read-only. Returns the basename part of the IO::Path::Parts
object.
IO::Path::Parts.new('C:', '/some/dir', 'foo.txt').basename.say;# OUTPUT: «foo.txt»
Previous implementations§
Before Rakudo 2020.06 the .parts
method of IO::Path
returned a Map
and the .split
routine of the IO::Spec
sub-classes returned a List
of Pair
. The IO::Path::Parts
class maintains compatibility with these previous implementations by doing Positional
, Associative
and Iterable
.
my = IO::Path::Parts.new('C:', '/some/dir', 'foo.txt');say <volume>; # OUTPUT: «C:»say [0]; # OUTPUT: «volume => C:»say [0].^name; # OUTPUT: «Pair».say for [];# OUTPUT: «volume => C:dirname => /some/dirbasename => foo.txt»