X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP%2FMethod.pm;h=76167fe68d9ae40f60e0c99066ead5b4aacde090;hb=5caf45ce90def730e4c3743050c7354a78ed9800;hp=9d8e10ad776b1e8747ffcca102319060fd77366d;hpb=2e5c1a3f4fda1d126ef237a3ee3ef13302ead57c;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP/Method.pm b/lib/Class/MOP/Method.pm index 9d8e10a..76167fe 100644 --- a/lib/Class/MOP/Method.pm +++ b/lib/Class/MOP/Method.pm @@ -29,7 +29,12 @@ before spending too much time chasing this one down. # construction sub wrap { - my ( $class, $code, %params ) = @_; + my ( $class, @args ) = @_; + + unshift @args, 'body' if @args % 2 == 1; + + my %params = @args; + my $code = $params{body}; ('CODE' eq ref($code)) || confess "You must supply a CODE reference to bless, not (" . ($code || 'undef') . ")"; @@ -38,15 +43,15 @@ sub wrap { || confess "You must supply the package_name and name parameters $UPGRADE_ERROR_TEXT"; bless { - '&!body' => $code, - '$!package_name' => $params{package_name}, - '$!name' => $params{name}, + 'body' => $code, + 'package_name' => $params{package_name}, + 'name' => $params{name}, } => blessed($class) || $class; } ## accessors -sub body { (shift)->{'&!body'} } +sub body { (shift)->{'body'} } # TODO - add associated_class @@ -54,12 +59,12 @@ sub body { (shift)->{'&!body'} } sub package_name { my $self = shift; - $self->{'$!package_name'} ||= (Class::MOP::get_code_info($self->body))[0]; + $self->{'package_name'} ||= (Class::MOP::get_code_info($self->body))[0]; } sub name { my $self = shift; - $self->{'$!name'} ||= (Class::MOP::get_code_info($self->body))[1]; + $self->{'name'} ||= (Class::MOP::get_code_info($self->body))[1]; } sub fully_qualified_name {