=pod

=for advent_year 2009

=for advent_day 24

=for advent_title No&euml;lvalue

=for advent_author Jerrad Pierce

M<lvalue> provides some supplementary syntax for defining Lvalue subroutines
in such a way as to overcome the two objections from
A<http://perldoc.perl.org/perlsub.html#Lvalue-subroutines|perlsub> i.e;

=over

=item the inability to P<2005-12-21|explicitly return>

=item encapsulation violation preventing the testing of arguments

=back

=begin pre

nick@north# perl -l mod24.pl
Dasher, Dancer, Vixen, Comet, Cupid, Prancer, Dunder, Blixem
Dasher, Dancer, Vixen, Comet, Cupid, Prancer, Donner, Blitzen
expected reference to an array, you supplied a HASH at mod24.pl line 10.

=end pre

One minor nit with it though, is that punctuation is forbidden between
the C<get> and C<set> blocks, which means that code formatters can be confused
(as perltidy was below) and the second block's contents will likely be
over-indented in your editor.
Fortunately, you can specify your blocks in whichever order you prefer,
so if one is much shorter than the other you can list it second to reduce
the visual impact of misindenting.

=sourcedcode mod24.pl

=cut
