#!/usr/bin/perl
use strict;
use warnings;
use 5.012;
use Phases;
my $main_closure = bless {name => 'main_closure'}, 'Phases';
sub closure {
say $main_closure;
}
my $external = bless {name => 'external'}, 'Phases';
END { say 'Main END' }
say 'Main Last line';
####
package Phases;
use 5.012;
BEGIN { say 'Phases BEGIN' }
UNITCHECK { say 'Phases UNITCHECK' }
CHECK { say 'Phases CHECK' }
INIT { say 'Phases INIT' }
END { say 'Phases END' }
my $my = bless {name => 'my'}, __PACKAGE__;
my $closure = bless {name => 'closure'}, __PACKAGE__;
our $our = bless {name => 'our'}, __PACKAGE__;
sub closure {
print $closure;
}
sub DESTROY {
my $self = shift or say 'Nothing passed to DESTROY' and return;
my $name = $self->{name} || '';
say "Phases DESTROY $name"
}
1;
####
Phases BEGIN
Phases UNITCHECK
Phases DESTROY my
Phases CHECK
Phases INIT
Main Last line
Phases DESTROY external
Main END
Phases END
Phases DESTROY closure
Phases DESTROY our
Phases DESTROY main_closure