opendir LOG_DIR, '/home/www/' or die "Cannot opendir /home/www"; while (defined(my $subdir = readdir LOG_DIR)) { open IN_FILE, '/home/www/'.$subdir.'/logs/weekly' || do {warn "Couldnt open home/www/$subdir/logs/weekly: $!"; next}; while () { #your code } close IN_FILE; } closedir LOG_DIR;