, . :
use Some::Module BEGIN { require Some::Module; Some::Module->import }- , .
BEGIN . require 'd . , require .
, , require d BEGIN.
:
use MyA;
use MyB;
MyB->new()->the_method();
use BEGIN { require ... } MyA. ->import MyA MyB, .
BEGIN {
package MyA;
use Moo;
with ( 'MyRole' );
sub the_method { die; }
}
BEGIN {
require MyB;
}
MyB->new()->the_method();
with('MyRole') a require MyRole, :
...
require MyRole;
with( 'MyRole ');
, :
BEGIN {
package MyA;
use Moo;
{
package MyRole;
use Moo::Role;
use MyB;
requires 'the_method';
before the_method => sub { die 'This has been correctly executed'; };
}
with ( 'MyRole' );
sub the_method { die; }
}
BEGIN {
require MyB;
}
MyB->new()->the_method();
use MyB, MyB with('MyRole') a require:
BEGIN {
package MyA;
use Moo;
{
package MyRole;
use Moo::Role;
BEGIN {
package MyB;
use Moo;
require MyRole;
with ( 'MyRole' );
sub the_method { die 'The code should have died before this point'; }
}
requires 'the_method';
before the_method => sub { die 'This has been correctly executed'; };
}
with ( 'MyRole' );
sub the_method { die; }
}
BEGIN {
require MyB;
}
MyB->new()->the_method();
MyB require MyRole, . . MyRole :
package MyRole;
use Moo::Role;
, . requires 'the_method'; before the_method => sub { ... } .
MyB , the_method.
? use , , . .
use , (, ), . , , . , require , . a require , , state $require_once = require Some::Module. , .
: , . . , : , .
, . ? , , , . ( A: ).
, . , , .