Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > $str =~ s/(\xff|\x00)//g;


Автор: Danissimo 8.12.2006, 15:19
Понимаю, что из строки str удалаяются символы \xFF и \x00. Но зачем? Ок, могу предположить, что 0 удаляется для того, чтобы, например, less не предупреждал о том, что файл возможно бинарный. Еще предположения есть? И зачем удалять FF? За тем же?

Да, и еще, под \xFF подразумавается юникодовый символ (16 бит, то есть 00FF) или 8 битный ASCII?

Добавлено @ 15:23 
Причем в каментах написано CleanEOF. А процедура называется cleanBinaryInfo. Вот и думай, шо хошш =))

Автор: Buhalich 9.12.2006, 12:25
А может стоить попробовать выложить сюда код, в котором вы встретили подобную строчку?) Всё таки не все тут экстрасенсами подрабатывают ;)

Автор: Danissimo 11.12.2006, 14:00
Лекго:
Код

### CleanEOF
sub cleanBinaryInfo {
    my $str = shift;
    $str =~ s/(\xff|\x00)//g;
    return $str;
}


А вот клиент этой подпрограммы:
Код

foreach my $Line (@Response) {
    ...
    $Line = cleanBinaryInfo($Line);
    print OUTPUT $Line;
}

Автор: blast99 14.12.2006, 12:30
Пологаю, это функция чистить строку от 255 и 0 символов.

Автор: Danissimo 14.12.2006, 15:58
Абсолютно верно. Зачем? Я вот не могу найти объяснения.

Автор: blast99 15.12.2006, 12:25
Видимо, это какие-то управляущие символы, правда чем именно они управляют я не знаю. Но ты даже сам уже несколько предположений выдвинул ;)

Автор: amg 15.12.2006, 14:15
Ну, например, символ 255 используется в качестве разделителя тысяч байт в выводе команды dir (DOS). И если нужно парсить такой вывод, от этого символа логично избавиться. 

Автор: blast99 15.12.2006, 15:59
кстати форума так  и не нашел...
есть только списки рассылок что не так удобно...


....

упс не туда... сори...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)