Как Perl знает, что файл является двоичным?

Вы можете использовать

:set nowrap

, чтобы остановить перенос длинных строк и синхронизировать ваши буферы. Не совсем то, что вы просили, но близко.

16
задан Joseph Gordon 22 May 2009 в 18:11
поделиться

2 ответа

Из perldoc -f -B :

Переключатели -T и -B работают следующим образом. Первый блок или поэтому файл проверяется на наличие нечетных символов, таких как странные управляющие коды или символы с установленным старшим битом. Если слишком много обнаружены странные символы (> 30%), это файл -B ; в противном случае это файл -T . Кроме того, любой файл, содержащий null в первый блок считается двоичным файлом. Если -T или -B используется для дескриптора файла, проверяется текущий буфер ввода-вывода а не первый блок. Оба -T и -B возвращают значение true при нулевой файл или файл по адресу EOF при тестировании дескриптора файла. Поскольку для выполнения теста -T вам необходимо прочитать файл, в большинстве если вы хотите сначала использовать -f для файла, как в " далее, если -f $ file && -T $ file ".
27
ответ дан 30 November 2019 в 16:42
поделиться

Согласно главе 11 книги Learning Perl :

Ответ: ** Perl читы **: он открывает файл, просматривает первые несколько тысяч байтов и делает обоснованное предположение. Если он видит много нулевых байтов, необычных управляющих символов и байтов с установленным старшим битом, то это похоже на двоичный файл. Если не так много странностей, то это похоже на текст. Иногда он ошибается. Если в текстовом файле много шведских или французских слов (которые могут содержать символы, представленные с установленным старшим битом, как некоторый вариант ISO-8859-something, или, возможно, даже версия Unicode), он может обмануть Perl, объявив его двоичным. Так что это не идеально,
10
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: