Есть ли в Perl6 что-то вроде теста файла Perl5 -T, чтобы определить, является ли файл текстовым файлом?
Как проверить, является ли файл текстовым файлом?
Ответ 1
Там нет ничего встроенного, однако есть модуль Data :: TextOrBinary, который делает это.
use Data::TextOrBinary;
say is-text('/bin/bash'.IO); # False
say is-text('/usr/share/dict/words'.IO); # True
Ответ 2
Это эвристика, которая не была переведена на Perl 6. Вы можете просто прочитать его в UTF8 (или ASCII), чтобы сделать то же самое:
given slurp("read-utf8.p6", enc => 'utf8') -> $f {
say "UTF8";
}
(замените read-utf8.p6 именем файла, который вы хотите проверить)
Ответ 3
мы можем использовать File :: Type с помощью следующего кода.
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
}