Perl6有像Perl5的-T文件测试一样的东西吗?可以判断文件是否为文本文件吗?
没有内置的功能,但是有一个模块Data::TextOrBinary可以实现。
use Data::TextOrBinary;
say is-text('/bin/bash'.IO); # False
say is-text('/usr/share/dict/words'.IO); # True
那是一种在Perl 6中没有被翻译的启发式算法。您可以简单地以UTF8(或ASCII)格式读取它来执行相同的操作:
given slurp("read-utf8.p6", enc => 'utf8') -> $f {
say "UTF8";
}
(将read-utf8.p6替换为您想要检查的文件的名称)
use strict;
use warnings;
use File::Type;
my $file = '/path/to/file.ext';
my $ft = File::Type->new();
my $file_type = $ft->mime_type($file);
if ( $file_type eq 'application/octet-stream' ) {
# possibly a text file
}
elsif ( $file_type eq 'application/zip' ) {
# file is a zip archive
}
use File::Type:from<Perl5>
和 $ft.mime_type($file)
,以成为 Perl6 代码。 - Brad Gilbert