Perl — очень мощный язык обработки текстовых данных.
В Perl вы можете использовать формат для определения шаблона, а затем использовать запись для вывода данных в соответствии с указанным шаблоном.
Синтаксис определения форматирования Perl следующий:
формат ФорматИмя =строка полязначение_один, значение_два, значение_тристрока полязначение_один, значение_два.
Анализ параметров:
FormatName : форматированное имя.
fieldline : строка формата, используемая для определения формата строки вывода, с такими символами, как @,^,,|.
value_one, value_two... : строки данных, используемые для вставки значений в строки предыдущего формата, являются переменными Perl.
. : символ завершения.
Ниже приведен простой пример форматирования:
Выходной результат выполнения приведенного выше примера:
первый: googleвторой: coderctoтретий: taoba
Строки формата начинаются с @ или ^, и в этих строках не выполняется замена переменных.
Поля @ (не путать с символом массива @) — это обычные поля.
Длина <, >,| после @,^ определяет длину поля. Если переменная превышает определенную длину, она будет усечена.
<, >,| также обозначают выравнивание по левому краю, выравнивание по правому краю и выравнивание по центру соответственно.
Поле ^ используется для заполнения многострочного текстового блока.
Формат диапазона значений показан в следующей таблице:
Формат | Значение диапазона значений |
---|---|
@<<< | вывод с выравниванием по левому краю |
@>>> | Выровненный по правому краю вывод |
@||| | Выход с выравниванием по центру |
@##.## | число фиксированной точности |
@* | многострочный текст |
Первый символ каждого поля значения является символом-заполнителем строки. При использовании символа @ форматирование текста не выполняется.
В приведенной выше таблице, за исключением многострочного поля значения @*, ширина поля равна указанному количеству символов, включая символ @, например:
@###.##
Это означает семь символов в ширину: четыре до десятичной точки и два после десятичной точки.
Примеры следующие:
Выходной результат приведенного выше примера:
==================================Али 20 2000.00============ =============================================== ========Кодеркто 30 2500.00=============================================== = ====================Джаффер 40 4000.00======================= = =========
$~ ($FORMAT_NAME): имя формата $^ ($FORMAT_TOP_NAME): имя текущего формата заголовка хранится в
$% ($FORMAT_PAGE_NUMBER): номер текущей выходной страницы.
$= ($FORMAT_LINES_PER_PAGE) : Количество строк на каждой странице.
$| ($FORMAT_AUTOFLUSH): нужно ли автоматически обновлять хранилище выходного буфера
$^L ($FORMAT_FORMFEED): строка, которую необходимо вывести перед сохранением заголовка каждой страницы (кроме первой страницы).
Ниже приведен пример простого форматирования с использованием $~:
Выходной результат выполнения приведенного выше примера:
================================ Текст # Учебное пособие по программированию ============ = ============================================== = === Текст # Учебное пособие по кодированию =================================
Если $~ не указан, будет выведен формат с именем STDOUT:
Выходной результат выполнения приведенного выше примера:
----------------Формат STDOUT----------------
В следующем примере мы демонстрируем использование переменных $^ или $FORMAT_TOP_NAME путем добавления информации заголовка отчета:
Выходной результат приведенного выше примера:
================================== Имя Возраст============ = ============================================== = =======Али 20 2000.00 ===================================== === =============================Codercto 30 2500.00=============================================== = ====================Джаффер 40 4000.00======================= = =========
Мы также можем использовать $% или $FORMAT_PAGE_NUMBER для установки нумерации страниц отчета:
Выходной результат приведенного выше примера:
================================= Имя Возраст Страница 1=========== = ============================================== = =========Али 20 2000.00 =================================== === ===============================Codercto 30 2500.00=============================================== = ====================Джаффер 40 4000.00======================= = =========
По умолчанию функция записи выводит результаты в стандартный выходной файл STDOUT, но мы также можем заставить ее выводить результаты в любой другой файл. Самый простой способ — передать файловую переменную в качестве параметра для записи, например:
написать (МОЙ ФАЙЛ);
Приведенный выше код записывает выходные данные в файл MYFILE, используя формат печати по умолчанию с именем MYFILE.
Но тогда вы не сможете использовать переменную $~ для изменения используемого формата печати. Системная переменная $~ влияет только на файловую переменную по умолчанию. Мы можем изменить файловую переменную по умолчанию, изменить $~, а затем вызвать write.
После успешного выполнения мы можем просмотреть содержимое tmp-файла следующим образом:
$ cat tmp ================================= Ввод в файл========== = ======================
Когда мы можем использовать select для изменения файловой переменной по умолчанию, он возвращает внутреннее представление текущей файловой переменной по умолчанию, так что мы можем создавать подпрограммы и выводить данные в соответствии с нашими собственными идеями, не затрагивая другие части программы.
После успешного выполнения мы можем просмотреть содержимое tmp-файла следующим образом:
$ cat tmp ================================= Ввод в файл========== = ============================================== = ===== Ввод в файл в заданном формате ==================================