Изучаем Perl
5c8b6e8c

Форматы"



Глава 11 "Форматы"

1. Вот один из способов решения этой задачи:

open(PW,"/etc/passwd") II die "How did you get logged in?";

while (<PW>) (

($user,$uid,$gcos) = (split /:/)[0,2,4];

($real) ° split /,/,$gcos;

write;

(

format STDOUT =

@“<““ @>””> @“““““““““““““““

$user, $uid, $real

Первая строка открывает файл паролей. В цикле while этот файл обрабатывается построчно. Для того чтобы можно было загрузить скалярные переменные, каждая строка разбивается на части; в качестве разделителя используется двоеточие. Реальное имя пользователя выбирается из поля GCOS. Последний оператор цикла while вызывает функцию write для вывода всех данных.

Формат дескриптора файла stdout определяет простую строку с тремя полями. Их значения берутся из трех скалярных переменных, значения которым присваиваются в цикле while.

2. Вот один из способов решения этой задачи:

# прибавить к программе из первой задачи... format STDOOT_TOP = Username User ID Real Name

Все, что нужно для добавления к предыдущей программе заголовков страниц,— это добавить формат начала страницы. Указанным выражением мы помещаем заголовки в столбцы.

Чтобы выровнять столбцы, мы скопировали текст формата stdout и, используя в нашем текстовом редакторе режим замены, заменили поля @<“ линиями ====.Это можно сделать благодаря существованию посимвольного соответствия между форматом и получаемым результатом.

3. Вот один из способов решения этой задачи:

# прибавить к программе из первой задачи.. . format STDOUT_TOP = Page @<“ $%

Username User ID Real Name

Здесь для получения заголовков страниц мы опять-таки ввели формат начала страницы. Этот формат содержит также ссылку на переменную $%, которая автоматически присваивает странице номер.



Содержание раздела