Вы думали попробовать следующее?
if (! -d $filename) ...
Результат -d
- это, в конце концов, то, что можно трактовать как логическое значение, поэтому логический оператор not !
будет работать нормально.
И, если вы ищете что-то более конкретное , чем "не каталог", см. здесь . Есть довольно много вещей, которые не являются каталогами, которые иногда не имеет смысла рассматривать как обычные файлы.
Имейте в виду, что вы уже подтвердили, что имя файла существует. Если вы введете ! -d
для несуществующего имени файла, оно вернет true.
Это философский вопрос о том, считаете ли вы несуществующую вещь «не каталогом», но, если вы хотите убедиться, что она существует, вы можете использовать ! -d
в сочетании с -e
, что-то как:
if ((-e $filename) && (! -d $filename)) ...