Skip to content
Perl

Модули и пакеты

Создание переиспользуемых модулей с ключевым словом package.

#module#package#export

Code

perl
# File: MyUtils.pm
package MyUtils;
use strict;
use warnings;
use Exporter 'import';

our @EXPORT_OK = qw(greet factorial sum);

sub greet {
  my ($name) = @_;
  return "Hello, $name!";
}

sub factorial {
  my ($n) = @_;
  return 1 if $n <= 1;
  return $n * factorial($n - 1);
}

sub sum {
  my @nums = @_;
  my $total = 0;
  $total += $_ for @nums;
  return $total;
}

1;  # Module must return true

# Usage:
# use MyUtils qw(greet factorial);
# print greet("Alice");
# print factorial(5);

# OO style (Moose or Moo recommended)
package Person;
use Moose;

has 'name' => (is => 'ro', isa => 'Str', required => 1);
has 'age'  => (is => 'rw', isa => 'Int', default => 0);

sub greet {
  my ($self) = @_;
  return "Hi, I'm " . $self->name;
}

__PACKAGE__->meta->make_immutable;
1;