use warnings; use strict; scandir( $ARGV[0] ); ## where to look from CLI sub scandir { my ($file) = @_; if ( -d $file ) { print $file,$/; ## print directory name opendir my $dh, $file or die "can't open directory: $!"; while ( readdir($dh) ) { chomp; next if $_ eq '.' or $_ eq '..'; print "\t", $_, $/ if /\.pl$/; ## print *.pl files scandir("$file/$_"); ## check sub-directory... } } }