class IO::Path::Parts 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 $parts = IO::Path::Parts.new('C:', '/some/dir', 'foo.txt'); say $parts<volume>; # OUTPUT: «C:» say $parts[0]; # OUTPUT: «volume => C:» say $parts[0].^name; # OUTPUT: «Pair» .say for $parts[]; # OUTPUT: «volume => C:dirname => /some/dirbasename => foo.txt»