my $dir = "/temp/"; for my $file (glob "$dir/*") { next unless -f $file; # process only regular files, not dirs open (my $F, $file) or die "cannot open file $!"; while (<$F>){ print $_; } close $F; } # closedir(DIR); -- not needed with glob