in reply to Enumerating all attributes of a Moo object
Do you want all the attributes of the object that are set; or all the attributes of the class that have been declared?
Example:
package Foo { use Moo; has a => (is => "ro"); has b => (is => "ro"); } my $bar = Foo->new(a => 42);
Do you want just "a", or do you want "a" and "b"?
If you want just "a" - that is, the list of attributes that have been set for a particular object - then unless you've been playing around subclassing Method::Generate::Accessor, you ought to be able to use keys(%$bar).
If you want "a" and "b" - that is, the list of all attributes declared for the class - then you could try:
keys(%{ 'Moo'->_constructor_maker_for('Foo')->all_attribute_specs })
... which IIRC respects inheritance and role composition.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Enumerating all attributes of a Moo object
by McA (Priest) on Jul 09, 2013 at 07:20 UTC | |
by tobyink (Canon) on Jul 09, 2013 at 08:39 UTC | |
by McA (Priest) on Jul 09, 2013 at 08:53 UTC | |
by tobyink (Canon) on Jul 09, 2013 at 08:27 UTC |