21 Mar
2016
Есть файл, первая строка которого начинается с символа # и почему-то она не ловится регекспом /^#.*/
Все остальные строки, которые начинаются на решётку, ловятся, первая - нет. Без символа начала строки ^ ловится и первая. Что за фигня? Начало файла не подразумевает начала строки?
в хекс ридакторе открой
stager, ef bb bf 23
23 -#.
Да, файл utf-8, но что же делать? Файл не обязательно может быть utf-8, поэтому я открываю его как обычный и потом по ходу дела угадываю кодировку.
Shura, может вот ето?
You have to set the encoding for the input, use utf8 does not do that for you. Just insert
use open IN => ":utf8";
before the loop. See open for details.
stager, в этом случае я получу ошибку, если файл не utf-8
stager, если открывать файл как utf-8, то такая проблема действительно не возникает, просто фалй создаются разными людьми, некоторые из которых сидят на винде и по привычке сохраняют всё в cp-1251. Я решил, что проще будет угадывать кодировку на лету, чем пытаться исправить поведение этих людей.
Перелопатил пол скрипта, переведя всё на нативный формат и конвертя его в utf-8 только на выходе, всё хорошо, кроме вот этого маленького глюка
stager, нашёл!
Убираем BOM, а потом работаем как обычно:
s/^\N{BOM}//;
в етом перле всё можно зделать! :)
stager, тут я не спорю