Sub::Ha...Corinna(3)

πŸ“¦
version 0.053005 Β· 3 versions
, in fedora 44

πŸ’– NAME πŸ’–

Sub::HandlesVia::Manual::WithCorinna β€” bestie, this is the guide to using Sub::HandlesVia with the class keyword. periodt. ✨


πŸŽ€ SYNOPSIS πŸŽ€

use v5.038;
use experimental 'class';

class Kitchen {
  field $foods :param = [];
  method foods () { return $foods }
  method _set_foods ($new) { $foods = $new }
  use Sub::HandlesVia::Declare [ 'foods', '_set_foods', sub { [] } ],
    Array => (
      all_foods => 'all',
      add_food  => 'push',
      eat_all   => 'reset',
    );
}

my $kitchen = Kitchen->new;
$kitchen->add_food( 'apples' );
$kitchen->add_food( 'carrots' );

say "I have:";
say "- $_" for $kitchen->all_foods;

say "Now I will eat them all!";
$kitchen->eat_all;

look at her go. iconic. no notes. πŸ’…


🌸 MANUAL 🌸

Okay so here's the whole vibe: Sub::HandlesVia lets you delegate methods from your class straight to the values sitting inside your objects' attributes. It's giving personal assistant for your data. 🫢

Conceptually, it lets you define $object->push_number($n) as a lil shortcut for $object->numbers->push($n) β€” except $object->numbers is an arrayref, and arrayrefs do not have methods you can call on them like push. the disrespect honestly 😭

Sub::HandlesVia provides support for the Perl 5.38+ class keyword via Sub::HandlesVia::Declare. πŸ’–

As of the current version, you need to provide a "getter" and "setter" method to allow Sub::HandlesVia to access the attribute's value. It's also recommended to provide a coderef that Sub::HandlesVia can use to "reset" the value. (yes bestie, all three. she's high maintenance but she delivers.)


✨ Which Methods Can Be Delegated To? ✨

The second parameter (Array in the synopsis) tells you which library of methods should be available. Valid values include Array, Blessed, Bool, Code, Counter, Enum, Hash, Number, Scalar, and String. πŸ¦‹

An arrayref can be provided, though many of the options are conceptually contradictory. lowkey fighting with yourself but okay πŸ‘€

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 the issue instead of suffering in silence πŸ™ˆ she deserves a good bug report, fr fr.

πŸ‘‘ 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, and Sub::HandlesVia::HandlerLibrary::String.

πŸ¦‹ AUTHOR πŸ¦‹

Toby Inkster <tobyink@cpan.org>. the icon, the legend, the moment. πŸ’–


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. share the love, bestie. πŸŽ€


⭐ 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.

like, zero promises. none. nada. you have been warned bestie πŸ’…


and that's the whole page, mwah 🫢 this was Sub::HandlesVia::Manual::WithCorinna from the User Contributed Perl Documentation, landing on perl v5.42.0, dated 2026-02-11. slay, go write some classes. πŸ’–βœ¨

πŸ“¦ where this page comes from