Команда или модуль Perl, такие как Linux "команда" file - PullRequest
3 голосов
/ 25 января 2011

У меня есть скрипт, который загружает файлы, но эти файлы не имеют никакой информации о них, прежде чем они будут загружены. Когда я писал для Linux, я только что позвонил qx{ 'file ' . $filename }, чтобы узнать, является ли он изображением JPEG, а если нет, то удалить его. Тем не менее, я сейчас пытаюсь переписать на платформу независимую и чисто Perl-форму. Я перевел все вызовы на system{ 'curl', $image_website } на вызовы LWP :: UserAgent, и я надеялся, что есть какой-то способ также заменить вызовы в файл чем-то.

1 Ответ

6 голосов
/ 25 января 2011

File::Type Модуль CPAN может вам помочь - его описание «определить тип файла с помощью магии», что и делает команда Unix type.

my $ft = File::Type->new();
my $type_from_file = $ft->checktype_filename($file);

Другой вариант -File::LibMagic (Perl-оболочка для libmagic; файл-4.x или файл-5.x)

...