Прежде всего, вы должны назвать файл person.pm (для модуля Perl). Затем вы можете загрузить его с помощью функции use :
use person;
Если каталог, в котором находится person.pm, находится не в @INC
, вы можете использовать прагму lib , чтобы добавить его:
use lib 'c:/some_path_to_source_dir';
use person;
Во-вторых, Perl не имеет специального синтаксиса для конструкторов. Вы назвали свой конструктор create
(что нормально, но нестандартно), но затем попытались вызвать person::new
, которого не существует.
Если вы собираетесь заниматься объектно-ориентированным программированием на Perl, вам действительно стоит взглянуть на Moose . Помимо всего прочего, он создает конструктор для вас.
Если вы не хотите использовать Moose, вот некоторые другие улучшения, которые вы можете сделать:
package person;
use strict; # These 2 lines will help catch a **lot** of mistakes
use warnings; # you might make. Always use them.
sub new { # Use the common name
my $class = shift; # To allow subclassing
my $this = {
name => undef;
email => undef;
}
bless $this, $class; # To allow subclassing
return $this;
}
Затем вызовите конструктор как метод класса:
use strict; # Use strict and warnings in your main program too!
use warnings;
use person;
my $john_doe = person->new();
Примечание: в Perl чаще используется $self
, чем $this
, но это на самом деле не имеет значения. Встроенная объектная система Perl очень минимальна и накладывает несколько ограничений на то, как вы ее используете.