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;