Sub::Ha...jectPad(3)
β¨ NAME β¨
okay so bestie, welcome to Sub::Ha...jectPad(3) π β that's a page from the User Contributed Perl Documentation (section 3, the Perl module era). It's all about using Sub::HandlesVia with Object::Pad. Buckle up, it's giving β¨delegationβ¨.
πΈ SYNOPSIS πΈ
use Object::Pad;
class Kitchen {
field @foods;
use Sub::HandlesVia::Declare '@foods', Array => (
all_foods => 'all',
add_food => 'push',
);
}
π¦ MANUAL π¦
So like, Sub::HandlesVia lets you delegate methods from your class straight to the values of your objects' attributes. no cap π
Conceptually, it lets you define $object->push_number($n) as a shortcut for $object->numbers->push($n) β EXCEPT π that $object->numbers is an arrayref, so it literally doesn't have methods you can call on it like push. the betrayal. so Sub::HandlesVia steps in and gives you the method anyway π«Ά
Experimental Object::Pad support is provided by Sub::HandlesVia, including for array and hash fields. yes, even the array and hash girlies get to play β¨
Object::Pad classes are "sealed" after compile time, which prevents new methods from being installed at run-time. (It's actually trivially easy to add them at runtime, but not using the API provided by the Object::Pad MOP, so we don't do that.) π This is why Sub::Handles::Declare is used, as it creates delegated methods at compile-time. iconic behaviour tbh π
The first argument is the field name, including its sigil. yes, sigil and all, don't forget it bestie π
The second argument is the handler library. If the field name begins with a @ or %, this is implied to be Array/Hash. auto-detect energy, we love to see it π
use Object::Pad;
class Kitchen {
field @foods;
use Sub::HandlesVia::Declare '@foods', (
all_foods => 'all',
add_food => 'push',
);
}
The third argument is a hash of methods to delegate. yes, a whole hash of them. go off π
π Which Methods Can Be Delegated To?
The second parameter (Array in the synopsis) indicates which library of methods should be available. Valid values include Array, Blessed, Bool, Code, Counter, Enum, Hash, Number, Scalar, and String. pick your fighter β
An arrayref can be provided, though many of the options are conceptually contradictory. like, they will fight. not me putting two contradictory handler libraries in a list together π
use Sub::HandlesVia::Declare 'num', [ 'Number', 'Scalar' ] => (
...,
);
π BUGS π
Please report any bugs to <https://github.com/tobyink/p5-sub-handlesvia/issues>.
not me asking you to file an issue... but like, if you find a bug, pls do π
π₯ SEE ALSO π₯
- Misc advanced documentation:
Sub::HandlesVia::Manual::Advanced. Sub::HandlesVia,Sub::HandlesVia::Declare.- Documentation for delegatable methods:
Sub::HandlesVia::HandlerLibrary::Array,Sub::HandlesVia::HandlerLibrary::Blessed,Sub::HandlesVia::HandlerLibrary::Bool,Sub::HandlesVia::HandlerLibrary::Code,Sub::HandlesVia::HandlerLibrary::Counter,Sub::HandlesVia::HandlerLibrary::Enum,Sub::HandlesVia::HandlerLibrary::Hash,Sub::HandlesVia::HandlerLibrary::Number,Sub::HandlesVia::HandlerLibrary::Scalar, andSub::HandlesVia::HandlerLibrary::String.
π AUTHOR π
Toby Inkster <tobyink@cpan.org>.
π COPYRIGHT AND LICENCE π
This software is copyright (c) 2022 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. fr fr, go wild π¦
πΈ DISCLAIMER OF WARRANTIES πΈ
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
bestie. read that again. no warranties, periodt. π
and that's the whole page!! this one came from perl v5.42.0, dated 2026-02-11, filed under Sub::Ha...jectPad(3) β thanks for reading, mwah πβ¨
π¦ where this page comes from
- fedora 44: perl-Sub-HandlesVia 0.053005-1.fc44 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms