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

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

Жанры

Язык программирования 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.Ссылка на скалярное значение

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

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

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.50
рейтинг книги
Тринадцатый V

Чужая семья генерала драконов

Лунёва Мария
6. Генералы драконов
Фантастика:
фэнтези
5.25
рейтинг книги
Чужая семья генерала драконов

Слезы Эйдена 1

Владимиров Денис
11. Глэрд
Фантастика:
боевая фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Слезы Эйдена 1

Кодекс Охотника. Книга XXXIV

Винокуров Юрий
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIV

Страж Тысячемирья

Земляной Андрей Борисович
5. Страж
Фантастика:
боевая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Страж Тысячемирья

Запечатанный во тьме. Том 3

NikL
3. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 3

Ермак. Война: Война. Интервенция. Революция

Валериев Игорь
Ермак
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Ермак. Война: Война. Интервенция. Революция

Черный Маг Императора 9

Герда Александр
9. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 9

Первый среди равных. Книга IV

Бор Жорж
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IV

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Играть... в тебя

Герцог

Первухин Андрей Евгеньевич
11. Ученик
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Герцог

Стёртые буквы

Первушина Елена Владимировна
Фантастика:
фэнтези
6.25
рейтинг книги
Стёртые буквы

Чехов книга 3

Гоблин (MeXXanik)
3. Адвокат Чехов
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Чехов книга 3

Дважды одаренный

Тарс Элиан
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Дважды одаренный