Du ermutigst einen Neuling, *noch* einen amateurhaft geschriebenen Verzeichnisleser in die Welt zu setzen. Trotz Selfgedanke: nein danke!
Wir haben das Problem schon gründlich, korrekt und ohne Sicherheitslücken gelöst und tausendfach getestet, und sollten unsere Energie darauf verwenden, uns interessanten und vor allem ungelösten Problemen zuzuwenden.
use File::Next qw();
my $target_directory = $ENV{HOME}; # beispielsweise
my $options = {
descend_filter => sub {0}, # niemals in Unterverzeichnisse abtauchen
file_filter => sub {!/\A [.]/msx}, # Dotfiles ignorieren
follow_symlinks => 1,
sort_files => 1, # Standardsortierung
};
for my $file_system_feature (qw(dirs files)) {
my $iterator = File::Next->can($file_system_feature)->($options, $target_directory);
while (defined(my $name = $iterator->())) {
say $name;
}
}