use strict; use warnings; use File:Find; use Data::Dumper; my $base_path = "."; sub dir_listing($) { my ($path) = @_; my @results; finddepth ( sub { return (-d); push @results, $File:Find:name; }, $path ); return sort @results; } print Dumper(dir_listing($base_path));