Чтение онлайн

на главную - закладки

Жанры

Язык программирования Perl

Шохирев Михаил Васильевич

Шрифт:

Дополнительные сведения о форматах и отчетах в Perl можно узнать из стандартной документации, обратившись за помощью к утилите

perldoc perlform

В завершение лекции приведем пример законченной программы (с образцом исходных данных), выводящей отчет о книгах по языку Perl.

open my $report, '>', '/report.txt' or die;

$old_handle = select $out; # выбрать поток для отчета

select $report;

$^ = 'HEAD';

$~ = 'REPORT';

#
описание форматов для отчета

while(<DATA>) { # чтение одной записи данных

($authors, $title, $year, $nick) = split ':';

write $report; # вывод одной строки отчета

}

close $report or die;

# формат для заголовка страницы

format HEAD =

Классические книги по языку Perl

издательства O'Reilly

Лист @#

$%

– --------------+--------------------+----+------------

Авторы | Заглавие |Год | Прозвище

– --------------+--------------------+----+------------

.

format REPORT =

^<<<<<<<<<<<<<<|^<<<<<<<<<<<<<<<<<<<|@###|@>>>>>>>>>>>

$authors, $title, $year, $nick

^<<<<<<<<<<<<<<|^<<<<<<<<<<<<<<<<<<<| | ~~

$authors, $title

– --------------+--------------------+----+------------

.

__DATA__

Cozens S.:Advanced Perl Programming,2nd ed.:2005:Panther Book

Friedl J.E.F.:Mastering Regular Expressions:1997:Owls Book

...

Результатом работы этой программы будет такой отчет, размещенный в файле report.txt:

Классические книги по языку Perl

издательства O'Reilly

Лист 1

– --------------+--------------------+----+------------

Авторы | Заглавие |Год | Прозвище

– --------------+--------------------+----+------------

Cozens S. |Advanced Perl |2005|Panther Book

|Programming,2nd ed. | |

– --------------+--------------------+----+------------

Friedl J.E.F. |Mastering Regular |1997| Owls Book

|Expressions | |

– --------------+--------------------+----+------------

Schwartz R.L., |Learning Perl, 4th |2005| Llama Book

Phoenix T., |ed. | |

brian d foy | | |

– --------------+--------------------+----+------------

Конечно,

изученные в этой лекции средства отчетов не могут сравниться с современными специализированными построителями отчетов, но во многих случаях бывает достаточно форматирования выходных данных в виде простых отчетов, которое в Perl делается достаточно легко, просто и наглядно. Эта лекция была "лирическим отступлением" перед тем как начать углубленное изучение техники программирования на языке Perl.

Лекция 11. Ссылки

В этой лекции будут изучены ссылки и ссылочные структуры данных, которые играют очень важную роль в Perl, так как позволяют создавать многомерные массивы, массивы записей и различные динамические структуры данных произвольной сложности: очереди, списки, деревья, графы. Кроме того, умение работать со ссылками необходимо для понимания объектно-ориентированного программирования в Perl.

Цель лекции: научиться обращаться со ссылками, объектами ссылок и структурами данных, основанными на ссылках, чтобы применять их при программировании задач со сложными структурами данных.

Ссылки явно или неявно применяются во всех языках программирования. Они позволяют гибко создавать динамические структуры данных неограниченной сложности. Ссылки являются одним из скалярных типов данных языка Perl, наряду с числами и строками. Ссылка (reference) - это информация о том, где при выполнении программы располагается в памяти объект определенного типа. Эту информацию можно использовать для доступа к объекту ссылки (referent). Ссылка - это возможность обратиться к какой-то информации не по имени, которое известно при компиляции, а по ее расположению в памяти при выполнении программы. В отличие от указателей в некоторых других языках, в Perl ссылки реализованы надежно и эффективно. Программист не должен заботиться о явном удалении из памяти объектов ссылок, поскольку занимаемая память автоматически освобождается встроенным сборщиком мусора, когда объекты ссылок перестают использоваться (то есть когда на них больше не указывает ни одна ссылка). Для создания ссылки на существующий программный объект предусмотрена операция взятия ссылки, обозначаемая обратной косой чертой (backslash), которая ставится перед объектом ссылки. В следующем примере показано, как можно получить ссылку на скалярную переменную и сохранить ее в другой переменной:

my $scalar = 'Скаляр'; # объект ссылки

my $ref2scalar = \$scalar; # ссылка на скаляр

На рис. 11.1 показан результат сохранения ссылки на значение скалярной переменной в другой скалярной переменной.

Рис. 11.1.Ссылка на скалярное значение

При помощи операции '\' можно брать ссылку на любые объекты, например, на литерал или на любое другое выражение, только при этом значение объекта ссылки нельзя будет изменить. В этом случае при выполнении программы выражение вычисляется, а результат сохраняется в анонимной области памяти, ссылка на которую и возвращается. Например:

Поделиться:
Популярные книги

Земной круг. Компиляция. Книги 1-9.

Аберкромби Джо
Земной Круг
Фантастика:
фэнтези
героическая фантастика
5.00
рейтинг книги
Земной круг. Компиляция. Книги 1-9.

Червь

МакКрэй Джон
Фантастика:
фэнтези
героическая фантастика
альтернативная история
6.80
рейтинг книги
Червь

Пути Предназначения

Воронова Влада Юрьевна
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Пути Предназначения

Володарь железного града

Серебров Яр
3. Князь Воротынский
Фантастика:
попаданцы
фантастика: прочее
5.00
рейтинг книги
Володарь железного града

Ричард Додридж Блэкмор - Лорна Дун

Блэкмор Ричард Додридж
Детские:
детские приключения
5.00
рейтинг книги
Ричард Додридж Блэкмор - Лорна Дун

Гном. Трилогия

Шуваев Александр
Фантастика:
научная фантастика
5.12
рейтинг книги
Гном. Трилогия

Жизнь и приключения Мартина Чезлвита

Диккенс Чарльз
Проза:
классическая проза
7.86
рейтинг книги
Жизнь и приключения Мартина Чезлвита

Хотели как лучше, но что-то пошло не так…

Снежкин Владимир
5. Заклятые друзья
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Хотели как лучше, но что-то пошло не так…

Северный путь

Гольшанская Светлана
Фантастика:
фэнтези
героическая фантастика
мистика
6.50
рейтинг книги
Северный путь

Второгодка. Книга 5. Презренный металл

Ромов Дмитрий
5. Второгодка
Фантастика:
городское фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Второгодка. Книга 5. Презренный металл

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Сорок апрельских дней

Савенков Сергей
1. Сорок апрельских дней
Фантастика:
фэнтези
5.00
рейтинг книги
Сорок апрельских дней

Естественный отбор

Звягинцев Александр Григорьевич
Детективы:
боевики
5.00
рейтинг книги
Естественный отбор

Потерянный разум

Кара-Мурза Сергей Георгиевич
Научно-образовательная:
политика
5.00
рейтинг книги
Потерянный разум