Как проверить, является ли файл текстовым файлом? - PullRequest
22 голосов
/ 15 апреля 2019

Есть ли в Perl6 что-то вроде теста файла Perl5 -T , чтобы определить, является ли файл текстовым файлом?

Ответы [ 3 ]

20 голосов
/ 15 апреля 2019

Ничего не встроено, однако есть модуль Data :: TextOrBinary , который делает это.

use Data::TextOrBinary;
say is-text('/bin/bash'.IO);                            # False
say is-text('/usr/share/dict/words'.IO);                # True
10 голосов
/ 15 апреля 2019

Это эвристика, которая не была переведена в Perl 6 . Вы можете просто прочитать его в UTF8 (или ASCII), чтобы сделать то же самое:

given slurp("read-utf8.p6", enc => 'utf8') -> $f {
    say "UTF8";
}

(замените read-utf8.p6 именем файла, который вы хотите проверить)

4 голосов
/ 17 апреля 2019

мы можем использовать 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
}

Источник: https://metacpan.org/pod/File::Type

...