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)); }