class IO::Path::Parts
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/dirâ€basename => foo.txtâ€Â»