Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
perl.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
388.1 Кб
Скачать

Упаковка данных в бинарные строки

Для вывода бинарных данных скрипт должен запаковать скалярные величины в строки бинарных символов. Для этого используетсяфункция 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 предлагает ещенабор фикций, которые позволяют позиционировать текущий указатель в списке каталога:

$result = rewinddir(DirHandle);

$result = telldir(DirHandle);

$result = seekdir(DirHandle, Position);

Форматированный вывод

В этой главе вы познакомились с несколькими способами форматирования выходных данных скрипта с помощью функции 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]