Perl форматированный вывод
Perl является очень мощным данных языка обработки текста.
Perl, может быть использован для определения формата шаблона, а затем использовать выходные данные записи данных с помощью указанного шаблона.
Формат Perl определен синтаксис выглядит следующим образом:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
Аналитические параметры:
- FORMATNAME: имя формата.
- Fieldline: формат строки, формат , используемый для определения выходной линии, похожий на @, ^, <,>, | такие персонажи.
- value_one, value_two ......: ряды данных, которые используются для вставки значений в передней формат строки, все переменные Perl.
- : End символ.
Ниже приведен простой пример отформатирован:
#!/usr/bin/perl $text = "google w3big taobao"; format STDOUT = first: ^<<<<< # 左边对齐,字符长度为6 $text second: ^<<<<< # 左边对齐,字符长度为6 $text third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断 $text . write
Выполните приведенный выше пример выход:
first: google second: w3big third: taoba
Формат строки (строка графического) Синтаксис
- Формат строки @ или ^ в начале, эти линии не подвергаются какой-либо форме подстановки переменных.
- @ Поле (не следует путать с массивом маркеров @) является обычным полем.
- @, <,>, ^ После | длина определяет длину поля, если переменная превышает определенную длину, она будет урезана.
- <,>, | Кроме того, представляют собой, выравнивание по левому краю, по правому краю, по центру выравнивается.
- ^ Поля для многострочного заполнения текстового блока.
Диапазон Формат
Диапазон форматов, следующим образом:
формат | Диапазон Значение |
---|---|
@ <<< | Левый выход |
@ >>> | Выравниваются по правому краю выходной |
@ ||| | Совместите выход |
@ ## ##. | Фиксированная точность номер |
@ * | Несколько строк текста |
Первый символ каждой строки является диапазон заполнителем при использовании символа @, а не форматирования текста.
В приведенной выше таблице, в дополнение к Многострочный @ * диапазон, широкий поле, равны указанному количеству символов в символ @, в том числе, например:
@###.##
Она представляет собой семь символов в ширину, после четырех до десятичной точки, запятой две.
Примерами могут служить следующие:
#!/usr/bin/perl format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== . select(STDOUT); $~ = EMPLOYEE; @n = ("Ali", "w3big", "Jaffer"); @a = (20,30, 40); @s = (2000.00, 2500.00, 4000.000); $i = 0; foreach (@n){ $name = $_; $age = $a[$i]; $salary = $s[$i++]; write; }
В приведенном выше примере выход:
=================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Переменный формат
- $ ~ ($ FORMAT_NAME): Название формата $ ^ ($ FORMAT_TOP_NAME): Имя текущего формата хранится в заголовке
- $% ($ FORMAT_PAGE_NUMBER): номер текущего вывода страницы
- $ = ($ FORMAT_LINES_PER_PAGE): количество строк на странице
- $ | ($ FORMAT_AUTOFLUSH): следует ли автоматически очищать буфер памяти выходной
- $ ^ L ($ FORMAT_FORMFEED): на каждой странице (кроме первой страницы) заголовка требуется до вывода строки хранится в
Ниже приведен простой в использовании $ экземпляр - формат:
#!/usr/bin/perl $~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式 write; # 输出 $~ 所指定的格式 format MYFORMAT = # 定义格式 MYFORMAT ================================= Text # 本教程 ================================= . write;
Выполните приведенный выше пример выход:
================================= Text # 本教程 ================================= ================================= Text # 本教程 =================================
Если вы не указать $ ~ при случае, выходной формат называется STDOUT:
#!/usr/bin/perl write; # 不指定$~的情况下会寻找名为STDOUT的格式 format STDOUT = ~用~号指定的文字不会被输出 ---------------- STDOUT格式 ---------------- .
Выполните приведенный выше пример выход:
---------------- STDOUT格式 ----------------
В следующем примере мы добавим информацию в заголовок отчета, чтобы продемонстрировать переменные $ ^ или $ FORMAT_TOP_NAME:
#!/usr/bin/perl format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== . format EMPLOYEE_TOP = =================================== Name Age =================================== . select(STDOUT); $~ = EMPLOYEE; $^ = EMPLOYEE_TOP; @n = ("Ali", "w3big", "Jaffer"); @a = (20,30, 40); @s = (2000.00, 2500.00, 4000.000); $i = 0; foreach (@n){ $name = $_; $age = $a[$i]; $salary = $s[$i++]; write; }
В приведенном выше примере выход:
=================================== Name Age =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Мы также можем использовать $% или $ FORMAT_PAGE_NUMBER набор для разбиения на страницы отчета:
#!/usr/bin/perl format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== . # 添加分页 $% format EMPLOYEE_TOP = =================================== Name Age Page @< $% =================================== . select(STDOUT); $~ = EMPLOYEE; $^ = EMPLOYEE_TOP; @n = ("Ali", "w3big", "Jaffer"); @a = (20,30, 40); @s = (2000.00, 2500.00, 4000.000); $i = 0; foreach (@n){ $name = $_; $age = $a[$i]; $salary = $s[$i++]; write; }
В приведенном выше примере выход:
=================================== Name Age Page 1 =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Вывод в другой файл
По умолчанию функция будет записывать результаты в стандартный файл вывода STDOUT, мы можем также сделать его выводит результат в любой другой файл. Самый простой способ заключается в файл переменной в качестве параметра для записи, такие как:
write(MYFILE);
Написать код, указанный выше, чтобы использовать выход формата печати по умолчанию в файл с именем MYFILE MYFILE в.
Но это не может быть использован для изменения формата печати, используемый переменной $ ~. Системные переменные $ ~ переменная работает только для файла по умолчанию, мы можем изменить переменную файла по умолчанию $ ~ изменения, а затем вызвать запись.
#!/usr/bin/perl if (open(MYFILE, ">tmp")) { $~ = "MYFORMAT"; write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。 format MYFILE = # 与文件变量同名 ================================= 输入到文件中 ================================= . close MYFILE; }
После успешной реализации, мы можем просмотреть содержимое файла TMP, следующим образом:
$ cat tmp ================================= 输入到文件中 =================================
Мы можем использовать выбрать, чтобы изменить переменную файла по умолчанию, который возвращает текущая внутренняя переменная указывает файл по умолчанию, так что мы можем создать подпрограмму, в соответствии с их собственной продукции идей, не затрагивая остальную часть программы.
#!/usr/bin/perl if (open(MYFILE, ">>tmp")) { select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中 $~ = "OTHER"; write; # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER format OTHER = ================================= 使用定义的格式输入到文件中 ================================= . close MYFILE; }
После успешной реализации, мы можем просмотреть содержимое файла TMP, следующим образом:
$ cat tmp ================================= 输入到文件中 ================================= ================================= 使用定义的格式输入到文件中 =================================