Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (6 – Конец строки, часть 2)

предыдущая часть ««»» следующая часть
При разработке программы, предназначенной для взаимодействия с сетевым сер­вером, выполняющим построчный ввод-вывод, в котором для обозначения конца строки применяется комбинация символов CRLF, нельзя обеспечить переносимость программы на другие платформы, установив значение переменной $/ равным rn. Вместо этого, следует явно указывать строку 1512. Чтобы внести большую яс­ность в этот вопрос, в модулях Socket, которые будут подробно опи­саны далее, предусмотрена возможность экспортировать глобальные переменные $CRLF и CRLF(), которые возвращают правильные значения.

При выполнении построчного ввода-вывода в системах Microsoft Windows и DOS возникает еще одна сложность. По сложившейся традиции, в системах DOS/Windows проводится различие между дескрипторами файлов, открытыми в “текстовом” и “двоичном” режиме. В двоичном режиме файл при выполнении ввода-вывода не подвергается никаким преобразованиям. При выводе данных в двоичный дескриптор файла запись этих данных выполняется в таком виде, в каком они были заданы. Ана­логичным образом при выполнении операции чтения данные возвращаются точно в таком виде, в каком они хранились в файле.

Однако в текстовом режиме стандартная библиотека ввода-вывода автоматически преобразует символы LF в пары CRLF на выходе, а пары символов CRLF — в символы LF на входе. Преимуществом этого является то, что текстовые операции в версиях интерпретатора Perl для Windows и UNIX с точки зрения программиста выглядят одинаково: строки текстовых файлов DOS оканчиваются одним символом n, так же как и в UNIX. Проблема возникает при чтении или записи двоичных файлов, таких как изображения или индексированные базы данных, и в файлах возникают непонят­ные искажения при вводе или выводе. Это связано с применяемым по умолчанию преобразованием символов конца строки. Если такое происходит в программе, необ­ходимо отключить преобразование символов, вызвав функцию binmode с указанием в качестве параметра дескриптора файла.

Функция binmode включает двоичный режим для дескриптора файла и отменяет преоб­разование символов. Она должна быть вызвана после открытия дескриптора файла, но перед выполнением с ним любых операций ввода-вывода. Форма вызова с одним параметром вклю­чает двоичный режим. Форма вызова с двумя параметрами, которая предусмотрена только в версии Perl 5.6 или в более высокой версии, позволяет включить двоичный режим, указав значение $discipline равным: raw, или восстановить применяемый по умолчанию тексто­вый режим, указав значение: crif.

Функция binmode выполняет какие-либо действия только в таких системах, как Windows и VMS, где обозначение конца строки состоит более чем из одного символа. В системах UNIX и Macintosh она не выполняет никаких действий.

Еще один способ исключения путаницы между текстовым и двоичным режимами состоит в использовании функций sysread и syswrite, которые обходят про­цедуры преобразования символов конца строки, предусмотренные в стандартной библиотеке ввода-вывода.

В языке Perl предусмотрен также набор специальных глобальных переменных, ко­торые позволяют уточнить другие характеристики построчного ввода-вывода, на­пример, указать, следует ли добавлять автоматически символ конца строки к данным, им водимым с помощью функций print, и нужно ли отделять друг от друга не­сколько значений данных разделителем.



2013-09-17 00:06:48

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2025 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония