Auf einem Linux-System kann ich den file
Befehl verwenden, um den Typ einer Datei zu erkennen.Perl-Modul für 'Datei' Befehl?
Gibt es ein Modul , das diesen Befehl kapselt?
Auf einem Linux-System kann ich den file
Befehl verwenden, um den Typ einer Datei zu erkennen.Perl-Modul für 'Datei' Befehl?
Gibt es ein Modul , das diesen Befehl kapselt?
Wenn Sie wissen, dass Sie auf einem gesunden Unix sind, können Sie einfach einen Systemanruf an file
machen.
Wenn Sie eine unabhängige Implementierung benötigen, there are several available on CPAN. Wahrscheinlich am nächsten zu file
ist File::MMagic. Dies ist eine eigene Implementierung, so dass es auf jedem System funktioniert, aber möglicherweise nicht genau wie file
funktioniert.
$ head test.pl
#!/usr/bin/env perl
use strict;
use warnings;
$ file test.pl
test.pl: a /usr/bin/env perl script text executable, ASCII text
$ perl -wlE 'use File::MMagic; $mm = File::MMagic->new; say $mm->checktype_filename(shift)' test.pl
x-system/x-unix; executable /usr/bin/env script text
File :: MMagic des built-in magic so kurz ist, ist es nutzlos. Vermeiden.
Verwenden Sie stattdessen File::LibMagic, es ist das beste.
$ perl -mFile::LibMagic -MDDS -E \
'say Dump(File::LibMagic->new
->info_from_filename("Startopia EULA English.docx"))'
$HASH1 = {
description => 'Microsoft Word 2007+',
encoding => 'binary',
mime_type => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
mime_with_encoding => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary'
};
Berichte 'docx' Datei als zip, aber auch' Datei' Befehl. – CJ7
@ CJ7 Ich wäre nicht überrascht, wenn docx mit zlib komprimiert ist. Möglicherweise müssen Sie dies mit einer Datenbank mit Dateierweiterungen kombinieren. – Schwern
Ich verwende dies nur für Dateien, die aus irgendeinem Grund keine Erweiterungen haben. – CJ7