После раздела, где вы проверяете наличие недопустимых символов, вы можете сравнить суффикс $ filename для расширения файла.Конечно, проблема в том, что фактическое содержимое файла может не совпадать (обычно это будет, но вы не всегда можете зависеть от этого) ...
if ($ filename = ~ /.(jpe? g | gif | png | pdf) $ /) {# --- Проверить .jpg, .jpeg, .gif, .png или .pdf
# --- Поддерживаемый тип файла
}else {
# --- Неподдерживаемый тип файла
}
Если вам нужно действительно сравнить тип на основе содержимого файла, определенного типом MIME, то это потребует большей вычислительной мощности (Apache HTTPdпредоставляет модуль для обнаружения типов MIME, который может быть полезен, но вам также может потребоваться обновить его до modperl_2 и использовать libapreq2 для доступа к этому API).
Однако в большинстве случаев простой тест расширения файла должен подойти.