#!/usr/bin/perl use v5.12; use warnings; sub readroot { my $drive=shift; my $name="$drive:/"; if (opendir my $d,$name) { my @list=grep /^\.{1,2}$/, readdir $d; closedir $d; return join(' ',"$drive:",@list); } return "$drive: $!"; } say readroot($_) for ('A' .. 'Z'); #### X:\>subst E:\: => C:\windows F:\: => C:\ X:\>perl readdir.pl A: No such file or directory B: Invalid argument C: D: E: . .. F: G: No such file or directory H: . .. I: . .. J: No such file or directory K: No such file or directory L: No such file or directory M: . .. N: No such file or directory O: No such file or directory P: No such file or directory Q: No such file or directory R: . .. S: No such file or directory T: . .. U: V: . .. W: No such file or directory X: Y: No such file or directory Z: Invalid argument X:\>