Lexical-Accessor
view release on metacpan or search on metacpan
lib/Lexical/Accessor.pm view on Meta::CPAN
\$get => 'get',
\$post => 'post',
],
);
# later...
my $response = $self->$get('http://example.net/');
Supports L<Sub::HandlesVia>:
my $remove_task;
lexical_has tasks => (
isa => ArrayRef,
handles_via => 'Array',
handles => [
task_count => 'count',
add_task => 'push',
next_task => [ 'get', 0 ],
\$remove_task => 'unshift',
],
);
# later...
while ($self->task_count) {
my $task = $self->next_task;
my $success = $self->handle_task($task);
if ($success) {
$self->$remove_task;
}
}
=item C<< initializer >>, C<< traits >>, C<< lazy_build >>
Not currently implemented. Providing any of these options throws an
error.
=item C<< documentation >>, C<< definition_context >>
Don't do anything, but are allowed; effectively inline comments.
=back
=back
=head2 Class Methods
=over
=item C<< lexical_has >>
This function may also be called as a class method.
=back
=head2 Comparison (benchmarking, etc)
Lexical::Accessor is almost three times faster than
L<MooX::PrivateAttributes>, and almost twenty time faster than
L<MooseX::Privacy>. I'd also argue that it's a more "correct"
implementation of private accessors as (short of performing impressive
L<PadWalker> manipulations), the accessors generated by this module
are completely invisible to subclasses, method dispatch, etc.
Compared to the usual Moose convention of using a leading underscore
to indicate a private method (which is a very loose convention; it is
quite common for subclasses to override such methods!),
L<Lexical::Accessor> clearly offers much better method privacy. There
should be little performance hit from using lexical accessors compared
to normal L<Moose> accessors. (However they are nowhere near the speed
of the XS-powered accessors that L<Moo> I<sometimes> uses and L<Mouse>
I<usually> uses.)
See also: C<< examples/benchmark.pl >> bundled with this release.
=head1 BUGS
Please report any bugs to
L<http://rt.cpan.org/Dist/Display.html?Queue=Lexical-Accessor>.
=head1 SUPPORT
B<< IRC: >> support is available through in the I<< #moops >> channel
on L<irc.perl.org|http://www.irc.perl.org/channels.html>.
=head1 SEE ALSO
L<MooX::PrivateAttributes>,
L<MooX::ProtectedAttributes>,
L<MooseX::Privacy>,
L<Sub::Private>,
L<Method::Lexical>,
etc...
=head1 AUTHOR
Toby Inkster E<lt>tobyink@cpan.orgE<gt>.
=head1 COPYRIGHT AND LICENCE
This software is copyright (c) 2013-2014, 2017, 2025 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.
=head1 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.
( run in 1.983 second using v1.01-cache-2.11-cpan-e1769b4cff6 )