Class::MOP::Method - Method Meta Object
| Use Case | Command | Description |
|---|---|---|
| Create a method meta-object | Class::MOP::Method->wrap($code, %options) | Wraps a coderef or method instance into a method meta-object. |
| Clone a method | $metamethod->clone(%params) | Shallow clones the method object, sharing the subroutine reference. |
| Get method body | $metamethod->body | Returns the method's subroutine reference. |
| Get method name | $metamethod->name | Returns the method's short name. |
| Get package name | $metamethod->package_name | Returns the package where the method was defined. |
| Get fully qualified name | $metamethod->fully_qualified_name | Returns "Package::Name::method". |
| Get associated metaclass | $metamethod->associated_metaclass | Returns the Class::MOP::Class object if set. |
| Get original method (clone) | $metamethod->original_method | Returns the method object from which this was cloned. |
| Get original name | $metamethod->original_name | First defined name in clone chain. |
| Get original package name | $metamethod->original_package_name | First defined package in clone chain. |
| Get original fully qualified name | $metamethod->original_fully_qualified_name | First defined fully qualified name. |
| Check if stub | $metamethod->is_stub | Returns true if method is a stub (e.g., sub foo;). |
| Attach to class | $metamethod->attach_to_class($metaclass) | Sets the associated metaclass. |
| Detach from class | $metamethod->detach_from_class | Removes associated metaclass. |
| Execute method | $metamethod->execute(...) | Invokes the method with given arguments. |
| Get meta class | Class::MOP::Method->meta | Returns the metaclass instance for this class. |
version 2.2200
The Method Protocol is very small, since methods in Perl 5 are just subroutines in a specific package. We provide a very basic introspection interface.
Class::MOP::Method->wrap($code, %options) — This is the constructor. It accepts a method body in the form of either a code reference or a Class::MOP::Method instance, followed by a hash of options.
The options are:
name — The method name (without a package name). This is required if $code is a coderef.package_name — The package name for the method. This is required if $code is a coderef.associated_metaclass — An optional Class::MOP::Class object. This is the metaclass for the method's class.$metamethod->clone(%params) — This makes a shallow clone of the method object. In particular, subroutine reference itself is shared between all clones of a given method. When a method is cloned, the original method object will be available by calling "original_method" on the clone.
$metamethod->body — This returns a reference to the method's subroutine.
$metamethod->name — This returns the method's name.
$metamethod->package_name — This returns the method's package name.
$metamethod->fully_qualified_name — This returns the method's fully qualified name (package name and method name).
$metamethod->associated_metaclass — This returns the Class::MOP::Class object for the method, if one exists.
$metamethod->original_method — If this method object was created as a clone of some other method object, this returns the object that was cloned.
$metamethod->original_name — This returns the method's original name, wherever it was first defined. If this method is a clone of a clone (of a clone, etc.), this method returns the name from the first method in the chain of clones.
$metamethod->original_package_name — This returns the method's original package name, wherever it was first defined. If this method is a clone of a clone (of a clone, etc.), this method returns the package name from the first method in the chain of clones.
$metamethod->original_fully_qualified_name — This returns the method's original fully qualified name, wherever it was first defined. If this method is a clone of a clone (of a clone, etc.), this method returns the fully qualified name from the first method in the chain of clones.
$metamethod->is_stub — Returns true if the method is just a stub:
sub foo;
$metamethod->attach_to_class($metaclass) — Given a Class::MOP::Class object, this method sets the associated metaclass for the method. This will overwrite any existing associated metaclass.
$metamethod->detach_from_class — Removes any associated metaclass object for the method.
$metamethod->execute(...) — This executes the method. Any arguments provided will be passed on to the method itself.
Class::MOP::Method->meta — This will return a Class::MOP::Class instance for this class. It should also be noted that Class::MOP will actually bootstrap this module by installing a number of attribute meta-objects into its metaclass.
This software is copyright (c) 2006 by Infinity Interactive, Inc.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Generated by phpman v4.9.26-1-g511901d · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-08-07 18:22 @2600:1f28:365:80b0:18ab:df6:7e48:ac07
CrawledBy CCBot/2.0 (https://commoncrawl.org/faq/)
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format