用于'文件'的Perl模块命令?

时间:2017-05-12 00:41:38

标签: perl file file-type

在Linux系统上,我可以使用file命令来检测文件的类型。

是否有一个perl模块封装了这个命令?

2 个答案:

答案 0 :(得分:4)

如果你知道自己会在一个理智的Unix上,你可以打电话给file

如果您需要独立实施,there are several available on CPAN。可能最接近file的是File::MMagic。这是它自己的实现,因此它可以在任何系统上运行,但可能与file完全不同。

$ 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

答案 1 :(得分:0)

File :: MMagic的built-in magic太短了,没用。避免。

而是使用File::LibMagic,这是最好的。

$ 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'
};