NAME

slots - A simple pragma for managing class slots.

VERSION

version 0.01

SYNOPSIS

package Point {
    use strict;
    use warnings;

    use parent 'UNIVERSAL::Object';
    use slots (
        x => sub { 0 },
        y => sub { 0 },
    );

    sub clear {
        my ($self) = @_;
        $self->{x} = 0;
        $self->{y} = 0;
    }
}

package Point3D {
    use strict;
    use warnings;

    use parent 'Point';
    use slots (
        z => sub { 0 },
    );

    sub clear {
        my ($self) = @_;
        $self->next::method;
        $self->{z} = 0;
    }
}

DESCRIPTION

This is a very simple pragma which takes a set of key/value arguments and assigns it to the %HAS package variable of the calling class.

This module will also detect superclasses and insure that slots are inherited correctly.

AUTHOR

Stevan Little <stevan@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Stevan Little.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.