#!/usr/bin/perl -w use strict; use File::Find; my $ROOT_DIR = "C:/"; #something like "$ENV{'HOME'}" on Unix.. find (\&print_all_files, "$ROOT_DIR"); sub print_all_files { return if !-d || !stat; #on some OS'es, this stat is needed my $full_dir_path = $File::Find::name; print STDOUT "$full_dir_path\n","-" x length($full_dir_path),"\n"; if (!opendir (D,$_)) { print STDERR "Could not open directory $full_dir_path\n\n"; die; #or just do a return() to keep going.... } print STDOUT map { sprintf "%s \n",$_; } #grep {length($_)>250} #maybe here? #grep {length("$full_dir_path/$_") >250) maybe? sort grep{ !-d "$full_dir_path/$_"}readdir D; print STDOUT "\n"; close D; }