use File::Find; find (\&ProcessDirTree, './_NewExtensionTemplate'); sub ProcessDirTree { print "Dir: $File::Find::name\n" if -d $File::Find::name; print "File: $File::Find::name\n" unless -d $File::Find::name; } File: ./_NewExtensionTemplate File: ./_NewExtensionTemplate/0_0 File: ./_NewExtensionTemplate/0_0/Inputs File: ./_NewExtensionTemplate/0_0/Inputs/ReadMe''.rtf File: ./_NewExtensionTemplate/0_0/Inputs/Build File: ./_NewExtensionTemplate/0_0/Inputs/Build/build.bld File: ./_NewExtensionTemplate/0_0/Inputs/Build/Build.macros File: ./_NewExtensionTemplate/0_0/Inputs/Build/NotATag.txt #### Dir: ./_NewExtensionTemplate Dir: ./_NewExtensionTemplate/0_0 Dir: ./_NewExtensionTemplate/0_0/Inputs File: ./_NewExtensionTemplate/0_0/Inputs/ReadMe''.rtf Dir: ./_NewExtensionTemplate/0_0/Inputs/Build File: ./_NewExtensionTemplate/0_0/Inputs/Build/build.bld File: ./_NewExtensionTemplate/0_0/Inputs/Build/Build.macros File: ./_NewExtensionTemplate/0_0/Inputs/Build/NotATag.txt