Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Топ:
Оснащения врачебно-сестринской бригады.
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2022-12-30 | 26 |
5.00
из
|
Заказать работу |
|
|
Для того чтобы скрипт получил доступ к бинарным данным, ондолжен распаковать их, перейдя в свой скалярный формат. СкриптыPerl распаковывают данные, используя функцию unpack, котораяимеет следующий формат:
$result = unpack(Template, Expression);Expression является обычной строковой переменной, котораясодержит бинарные данные, прочитанные функцией sysread, но можетбыть также выражением, которое необходимо интерпретировать какстроку. Template представляет собой символьную строку-шаблон,описывающую, как интерпретировать значения в операнде Expression.Следующий фрагмент программы иллюстрирует использование функцииunpack:
($r, $g, $b) = unpack("C3", $color);# распакует в 3 символа@longwords = unpack("L*", $data); # распакует в список длинных # слов @stuff = unpack("S2L", $bin); # распакует в 2 shorts и long
Каждый символ шаблона может сопровождаться числом, указывающим, сколько раз использовать этот символ. Если вместо числастоит звездочка (*), то операция будет выполняться для всех остающихся данных в строке. Если число не поставлено, то она выполняется однократно. Скрипт может поместить любое число символовшаблона в строку Template. В таблице 12.4 перечисляются символы,входящие в строковый параметр Template вместе с описанием влияния каждого из них на выполнение функции unpack.
Табл. 12.4. Символы шаблона
Символ шаблона | Описание |
a | Строка ASCII без нулевого символа |
А | Строка ASCII без нулевого символа |
b | Битовая строка (младший бит идет первым) |
В | Битовая строка (старший бит идет первым) |
с | Однобайтовый символ со знаком |
С | Однобайтовый символ без знака |
d | Значение с плавающей запятой, двойной точности |
f | Значение с плавающей запятой, одинарной точности шаблона |
h | Строка шестнадцатиричных значений (младшие разряды идут первыми) |
Н | Строка шестнадцатиричных значений (старшие разряды идут первыми) |
i | Целое со знаком |
I | Целое без знака |
l | Целое со знаком типа long |
L | То же, только без знака |
n | Короткое целое |
N | Длинное целое |
p | Указатель на строку |
s | Короткое целое со знаком |
S | Короткое целое без знака |
u | Раскодировка строки |
v | Короткое целое |
V | Длинное целое |
x | Пропустить вперед один байт |
X | Пропустить назад один байт |
@ | Перейти на указанную позицию в строке |
УПАКОВКА ДАННЫХ В БИНАРНЫЕ СТРОКИ
|
Для вывода бинарных данных скрипт должен запаковать скалярные величины в строки бинарных символов. Для этого используетсяфункция pack, формат которой указан ниже:
$result = pack(Template, List);Следующий фрагмент программы иллюстрирует использование функции pack:
$color = pack("C3", $r, $g, $b); $data = pack("L*", @longword); $bin = pack("S2L", @stuff);Функция pack использует те же самые символы шаблона, что ифункция unpack, за исключением символов а. А, и, х, X, @.
РАБОТА С КАТАЛОГАМИ
Perl предоставляет не только широкий набор функций для обработки файлов, но также несколько очень удобных функций для сканирования каталогов. В следующих разделах мы рассмотрим некоторыеиз основных функций для работы с каталогами в деталях.
ОТКРЫТИЕ, ЧТЕНИЕ И ЗАКРЫТИЕ КАТАЛОГОВ
Скрипты на языке Perl позволяют открывать и читать содержимое файлов. Точно так же эти скрипты открывают каталоги и читаютимена содержащихся в них слайдов. Для открытия каталога скриптыиспользуют функцию opendir, передавая указатель каталога и путь кнему. Для чтения списка файлов, содержащихся в каталоге, скриптиспользует функцию readdir. Наконец, для закрытия каталога используется функция closedir. Следующий фрагмент программы иллюстрирует использование функции readdir для того, чтобы вывести наэкран список файлов в текущем каталоге:
opendir(Dir, $INC[2]) || die; while ($file = readdir(Dir)) { print "$file \n" } closedir(Dir);В этом фрагменте используется переменная $INC[2J для доступа к текущему каталогу. Изменяя $INC[2] на $ARGV[0], скрипт выводит на экран список файлов, содержащихся в каталоге, который выуказали в командной строке. В дополнение к функциям для работы скаталогами, которые были рассмотрены выше, Perl предлагает ещенабор фикций, которые позволяют позиционировать текущий указатель в списке каталога:
|
ФОРМАТИРОВАННЫЙ ВЫВОД
В этой главе вы познакомились с несколькими способами форматирования выходных данных скрипта с помощью функции print. Аналогично языку С, Perl также поддерживает функции printf и sprintf.В дополнение Perl также поддерживает генерацию отчетов в форместолбцов, используя шаблоны форм.
ИСПОЛЬЗОВАНИЕ ФУНКЦИИ PRINT
В этой главе скрипты широко использовали функцию print. Кроме того, Perl обеспечивает специальные переменные, которые влияютна работу функции print. В таблице 12.5 кратко характеризуютсяэти специальные переменные.
Табл. 12.5. Специальные переменные, которые управляют функциейпечати
Переменная | Назначение |
$, | Разделитель для элементов печати |
$" | Разделитель элементов списка при интерполяции строки |
$\ | Разделитель для выходных записей |
$# | Форматирование числового выхода (по умолчанию '%.20g') |
Для использования этих специальных переменных достаточнопросто присвоить им значения, которые вы хотите. Например, в следующем фрагменте программы используется переменная $ для того,чтобы задать сепаратор между элементами печати:
$, = '*'; @list = 1..10; print @list; # Выведет 1*2*3*4*5*6*7*8*9*10Оказывается, что переменная $ на самом деле воздействует навсе строки, а не только на те, которые выводятся на печать. Однако чаще всего вы будете использовать ее для того, чтобы изменитьзначение, выводимое функцией print.
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!