Я пытаюсь ограничить свой код Perl-Tk только открытием текстовых файлов для редактирования. Я проверяю, чтобы убедиться, что пользователь выбрал правильный файл (я использую Tks getOpenFile()
):
if ( (defined $file) and (-f $file) and (-T $file) ) {
#work with file
}
Проблема, с которой я столкнулся, заключается в том, что некоторые PDF-файлы проходят тест -T и открываются (что вызывает большой хаос). Я попробовал этот код в каталоге, полном PDF-файлов:
#!/usr/bin/perl
use strict;
use warnings;
my @files = <*>;
foreach (@files) {
if (-T) { print "$_ is a text file\n"};
}
Около 1/2 PDF-файлов в каталоге печатается.
Я неправильно использую -T? Должен ли я добавить регулярное выражение для фильтрации PDF-файлов? И почему же Perl считает, что только некоторые PDF-файлы являются текстовыми?
EDIT: -T
- это тест файла, который должен возвращать true, если файл представляет собой простой текст. Я не пытаюсь проверить, не испортился ли он.