---
name: "Sub::HandlesVia::Declare"
section: "3pm"
platform: "linux"
package: "perl-sub-handlesvia"
version: "0.053005-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Sub::HandlesVia::Declare"
---

# Sub::HandlesVia::Declare(3pm)

declare delegations at compile-time

## NAME

Sub::HandlesVia::Declare - declare delegations at compile-time

## SYNOPSIS

```
 use Sub::HandlesVia::Declare( $attr, $via => %delegations );
```

This is roughly equivalent to the following:

```
 use Sub::HandlesVia qw(delegations);

 BEGIN {
   delegations(
     attribute    => $attr,
     handles_via  => $via,
     handles      => \%delegations,
   );
 };
```

Except it doesn't import the `"delegations"` function into your namespace.

## DESCRIPTION

Useful for Object::Pad and kind of nice for Class::Tiny. Basically any class builder than does its stuff at compile time.

### Object::Pad

```
 use Object::Pad;

 class Kitchen {
   has @foods;
   use Sub::HandlesVia::Declare '@foods', Array => (
     all_foods => 'all',
     add_food  => 'push',
   );
 }
```

If an attribute begins with a '@' or '%', `$via` can be omitted.

```
 use Object::Pad;

 class Kitchen {
   has @foods;
   use Sub::HandlesVia::Declare '@foods', (
     all_foods => 'all',
     add_food  => 'push',
   );
 }
```

### Class::Tiny

```
 package Kitchen;
 use Class::Tiny {
   foods  => sub { [] },
   drinks => sub { [ 'water' ] },
 };
 use Sub::HandlesVia::Declare 'foods', Array => (
   all_foods  => 'all',
   add_food   => 'push',
 );
 use Sub::HandlesVia::Declare 'drinks', Array => (
   all_drinks => 'all',
   add_drink  => 'push',
 );
```

## BUGS

Please report any bugs to \<https://github.com/tobyink/p5-sub-handlesvia/issues\>.

## SEE ALSO

Sub::HandlesVia.

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

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