Noch Anmerkungen zu Deinem Code:
* "Bareword"-Filehandles sollte man nicht benutzen, sondern durch lexikalische Variablen ersetzen:
opendir my $dh, $dirname anstatt
opendir DIR, $dirname.
* Wenn Du schon Systemaufrufe auf Fehler kontrollierst, solltest Du Dir idealerweise auch die Fehlermeldung anschauen, wenn es zum Fehler kommt.
opendir(...) or die "Fehler: $!"
* Du liest Eintrag für Eintrag aus dem Verzeichnis, und wenn es eine Datei ist, überspringst Du sie. Warum?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!