当文件具有tmp扩展名时,在Perl中确定视频扩展名

时间:2016-12-22 20:41:43

标签: perl

我正在使用perl执行视频上传,并且我希望确定视频扩展名,例如路径类似于1lmZeK7M.1

如您所见,路径最后是.1,而不是视频的文件扩展名。

如何使用上述文件名获取Perl中视频的文件扩展名?

1 个答案:

答案 0 :(得分:2)

显然,你必须查看文件本身。

模块File::LibMagiclibmagic库提供绑定。来自文档

use File::LibMagic;

my $magic = File::LibMagic->new();
my $info = $magic->info_from_filename('path/to/file');

print $info->{description};  # description, like "ASCII text"
print $info->{mime_type};    # MIME type,   like "text/plain"

但是,可能未安装库libmagic本身。

另一个可能有用的模块是File::Properties,面向媒体文件。

最后,如果编译模块的障碍太大,我们可以使用系统实用程序

my $info = `file $file`;

然后解析视频相关短语的输出。或者,也许使用file选项--mime-type

在文件unknown上,我复制了一个好的.png文件

> file --mime-type unknown

返回行unkown: image/png。例如,通过

从这里提取扩展名
my $info = `file --mime-type $filename`;

my ($name, $type, $ext) = $info =~ m| ([^:]+) : \s* ([^/]+) / (.*) |x;

/x允许空格以便于阅读。 否定字符类 [^:]+会捕获除:以外的所有内容,因此一直到:。然后[^/]+将所有内容放到第一位/

对所有预期的视频格式进行PLease测试file,以查看确切的输出。