use strict; use warnings; use feature qw( say ); use Path::Class qw( dir file ); my $path = "/aaaa/bbbb/cccc/dddd/index.html"; my @dir_split = file($path)->dir->dir_list(); my $dir = dir(shift(@dir_split)); for (;;) { say $dir; last if !@dir_split; $dir = $dir->subdir(shift(@dir_split)); } #### my $dir; for ( file($path)->dir->dir_list() ) { $dir = $dir ? $dir->subdir($_) : dir($_); say $dir; } #### my $dir; my @paths = map { $dir = $dir ? $dir->subdir($_) : dir($_) } file($path)->dir->dir_list();