# Assuming you want to read files in directory $dir opendir(my $fh, $dir) or die "Can't read directory '$dir' ($!)\n"; my @files = readdir($fh); closedir($fh); foreach my $file (@files) { next if ($file eq "." or $file eq ".."); # Skip self and parent my $path = "$dir/$file"; # Construct full pathname if (-f $path) { # Do something with regular file $path ... } elsif (-d $path) { # Do something with subdirectory $path ... } }