=pod =for advent_year 2009 =for advent_day 24 =for advent_title Noëlvalue =for advent_author Jerrad Pierce M provides some supplementary syntax for defining Lvalue subroutines in such a way as to overcome the two objections from A 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 and C 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 contents will 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