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

В Perl пакет — это автономная единица определяемых пользователем переменных и подпрограмм, которую можно повторно использовать снова и снова. Пакеты Perl предоставляют отдельное пространство имен внутри программы Perl, которое сохраняет подпрограммы и переменные независимыми от конфликтов с другими пакетами.

Чтобы объявить класс с именем Person в Perl, мы делаем:

package Person;

Давайте создадим наш конструктор для нашего класса Person, используя хэш-ссылку Perl. При создании объекта вам необходимо предоставить конструктор, который представляет собой подпрограмму внутри пакета, возвращающую ссылку на объект. Ссылка на объект создается путем благословения ссылки на класс пакета.

#!/usr/bin/perl 
package Person;
sub new {
   my $class = shift;
   my $self = {
      _firstName => shift,
      _lastName  => shift,
      _ssn       => shift,
   };
   # Print all the values just for clarification.
   print "First Name is $self->{_firstName}\n";
   print "Last Name is $self->{_lastName}\n";
   print "SSN is $self->{_ssn}\n";
   bless $self, $class;
   return $self;
}
sub setFirstName {
   my ( $self, $firstName ) = @_;
   $self->{_firstName} = $firstName if defined($firstName);
   return $self->{_firstName};
}
sub getFirstName {
   my( $self ) = @_;
   return $self->{_firstName};
}
1;

Теперь давайте воспользуемся объектом Person в файле scientific-employee.pl следующим образом:

#!/usr/bin/perl
use Person;
$object = new Person( "Sci", "Pro", 23234345);
# Get first name which is set using constructor.
$firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";
# Now Set first name using helper function.
$object->setFirstName( "Scientific" );
# Now get first name set by helper function.
$firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";

Когда мы выполняем вышеуказанную программу, она дает следующий результат:

First Name is Scientific
Last Name is Pro
SSN is 23234345
Before Setting First Name is : Sci
Before Setting First Name is : Pro.

Запуск интерактивно!

Курс «Системы PERL и научное программирование» — это практическое обучение, которое даст вам глубокое понимание и практические знания Perl, необходимые для создания любого проекта.