|
no warnings; my $M =__PACKAGE__.::;*{ $M .Object::new}= sub { bless { @_ [1.. $#_ ]}, $_ [0]};*{ $M . import }= sub { import warnings;$^H|=1538; my ( $P , %e , %o )= caller .::; shift ; eval "no Mo::$_" ,&{ $M . $_ .::e}( $P ,\ %e ,\ %o ,\ @_ ) for @_ ; return if $e {M}; %e =( extends , sub { eval "no $_[0]()" ;@{ $P .ISA}= $_ [0]}, has , sub { my $n = shift ; my $m = sub { $#_ ? $_ [0]{ $n }= $_ [1]: $_ [0]{ $n }}; $m = $o { $_ }->( $m , $n , @_ ) for sort keys %o ;*{ $P . $n }= $m }, %e ,);*{ $P . $_ }= $e { $_ } for keys %e ;@{ $P .ISA}= $M .Object};*{ $M . 'build::e' }= sub { my ( $P , $e )= @_ ; $e ->{new}= sub { $c = shift ; my $s = bless { @_ }, $c ; my @B ; do { @B =( $c .::BUILD, @B )} while ( $c )=@{ $c .::ISA}; exists &$_ && &$_ ( $s ) for @B ; $s }}; @f = qw[build] ; use strict; use warnings; 1;
|