use File::Find; #print all entries at or below starting dir: find ( sub { print $File::Find::name,"\n" }, '.' ); #print all directories at or below starting dir: find ( sub { next unless -d; print $File::Find::name,"\n"; }, '.' ); #print all entries, trailing directories with a '/': find ( sub { print $File::Find::name,(-d $_ ? '/' : ''),"\n" },'.' );