my $dir = ...; opendir my $dh, $dir or die "can't read $dir: $!"; while (defined(my $name = readdir $dh)) { my $file = "$dir/$name"; # XXX <-- here if (-d $file) { ... } } closedir $dh;