Все вышеперечисленные решения потенциально проблематичны, если в каталоге много файлов (10 000 или более), поскольку все они читаются сразу во всем списке файлов.Безопаснее всего делать итерацию по каталогу, а не читать все сразу.«readdir» может возвращать только следующую запись в скалярном контексте.Я рекомендую обновить ответ @ hpvac циклом while, который просматривает каталог по одной записи за раз.
(Если вы уверены, что огромное количество файлов никогда не будет, решения, приведенные выше, работоспособны.)