"Дмитрий Леонов. Использование Perl в интернет-технологиях" - читать интересную книгу автора

@a = split(/:/, $s); # массив @a будет содержать три элемента - "abc",
"def", "ghi".
Если не указан второй параметр, работа идет с переменной $_. Если не
указан и первый параметр, используется образец /\s+/.
Обратная функция - join - берет список значений и склеивает их,
вставляя между ними строку-связку, переданную ей в первом параметре:
$s = join(":", @a);

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

Пакеты, библиотеки, модули, классы и объекты
Пакеты предназначены для разделения глобального пространства имен. По
умолчанию все программы выполняются в пакете main, пока директива package не
выбирает другой пакет. Для доступа к именам, описанным в другом пакете,
используется синтаксис $ИмяПакета::ИмяПеременной.
Модули представляют собой отдельные файлы, содержащие набор
взаимосвязанных функций. Каждый модуль имеет внешний интерфейс и, как
правило, описывает свои глобальные переменные и функции в отдельном пакете.
К основной программе модули подключаются с помощью директив use и
require. Директива use подключает модуль на этапе компиляции программы (хотя
Perl формально и является интерпретируемым языком, непосредственно перед
исполнением происходит компиляция исходных текстов программы), директива
require загружает модуль во время выполнения.
Формально в Perl нет средств для создания составных типов данных
наподобие структур или классов в С++, но имеющихся в нем средств вполне
достаточно для их довольно близкой имитации.
Обычные структуры имитируются в Perl с помощью анонимных хэшей:
$record = {
NAME => 'record1',
FIELD1 => 'value1',
FIELD2 => 'value2',
FIELD3 => 'value3',
};
print $record->{FIELD1};
$records{$record->{NAME}} = $record;
$records{"record1"}->{FIELD1} = 1;

Классы в Perl представляют собой пакеты, а объекты - нечто (обычно все
та же ссылка на анонимный хэш), приведенное с помощью функции bless к
классу.
Внутри пакета обычно существует функция-конструктор, которая выполняет
всю эту работу. Типичный конструктор выглядит как
sub new
{
my $class = shift; # получаем имя класса
my $self = {}; # выделяем новый хэш для объекта
bless($self, $class); # приводим хэш к классу
$self->{FIELD1} = "value1";# инициализируем поля объекта