```{index} single: fetch_attrs; attributes function ``` ```{index} single: attributes::fetch_attrs; Perl function ``` # fetch_attrs Return the built-in attributes currently set on a referent. ## Synopsis ```perl my @attrs = attributes::_fetch_attrs(\&foo); ``` ## What you get back A list of attribute names drawn only from the built-in set. For a `CODE` referent that list can contain `lvalue` and `method`. For any other referent the list is empty. User-defined attributes are not consulted here; use `get` for that. ## Examples ```perl sub s :lvalue :method { $x } my @a = attributes::_fetch_attrs(\&s); # ('lvalue', 'method') ``` ```perl my $h = {}; my @a = attributes::_fetch_attrs($h); # () ``` ## Edge cases - Called with the wrong number of args or a non-reference: croaks with `Usage: attributes::_fetch_attrs($reference)`. - Order is fixed: `lvalue` before `method` when both are set. ## Differences from upstream Fully compatible with upstream. ## See also - `get` — public wrapper that also calls `FETCH_${type}_ATTRIBUTES`. - `_modify_attrs` — write-side counterpart.