#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
use Path::Tiny;
my $path = '/abc/def/ghi';
my $climb = path($path);
my @paths = $climb;
push @paths, $climb until ($climb = $climb->parent) eq '/';
say for @paths;
####
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
use File::Spec;
my $path = '/abc/def/ghi';
my @paths = 'File::Spec'->splitdir($path);
for my $i (reverse 0 .. $#paths) {
$paths[$i] = join '/', @paths[0 .. $i];
}
shift @paths; # Remove the empty path.
say for @paths;
####
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
use Path::Tiny;
my $path = '/abc/def/ghi';
my @paths = split m{(?<=.)/}, $path;
for my $i (reverse 0 .. $#paths) {
$paths[$i] = join '/', @paths[0 .. $i];
}
say for @paths;