NAME perl5::tobyink - a lightweight collection of syntax extensions SYNOPSIS use perl5::tobyink; DESCRIPTION "use perl5::tobyink" is roughly equivalent to: use 5.010; use autodie; use common::sense; use constant { false => !1, true => !!1 }; use mro qw(c3); use namespace::sweep; use syntax qw(maybe perform ql qwa); use true; use utf8::all; no indirect qw(:fatal); require Encode; require IO::Handle; use Carp qw(carp croak confess); use Devel::Assert qw(0); use List::Util qw(first max min reduce shuffle); use List::MoreUtils qw(uniq); use Method::Signatures::Simple 1.00 method_keyword => 'method', function_keyword => 'function'; use Object::Tap -package => 'UNIVERSAL'; use Path::Class qw(file dir); use POSIX qw(floor ceil); use Scalar::Util qw(blessed isweak looks_like_number refaddr reftype weaken); use Try::Tiny 0; *trim = \&perl5::tobyink::trim; *ltrim = \&perl5::tobyink::ltrim; *rtrim = \&perl5::tobyink::rtrim; *normalize = \&perl5::tobyink::normalize; Object Oriented Programming Calling with the parameter "-class", will also act as "use Any::Mo", and thus will set up a "new" method for your package, provide "has", "extends" and other antlery sugar. { package Person; use perl5::tobyink -class; has name => (is => read_only, isa => 'Str'); has age => (is => read_only, isa => 'Num'); } With the "-class" parameter, additional constants read_only and read_write are exported too. If you'd rather use Moose or Mouse or whatever, then don't pass "-class" and use Moose/Mouse/whatever manually. The read_only/read_write constants can be exported using the "-antlers" parameter. { package Person; use perl5::tobyink -antlers; use Any::Moose; has name => (is => read_only, isa => 'Str'); has age => (is => read_only, isa => 'Num'); } Assertions You can include assertions in your code a la: method set_name ($new) { assert(length $new > 0); $self->{name} = $new; } By default assertions are not checked at all; they are short-circuited entirely. To have them checked, you need to "use Devel::Assert -all". One easy way is to run your script like this: perl -MDevel::Assert=-all yourscript.pl BUGS Please report any bugs to . SEE ALSO Any::Mo, autodie, Carp, common::sense, Encode, Devel::Assert, indirect, IO::Handle, List::Util, List::MoreUtils, Method::Signatures::Simple, mro, namespace::sweep, Object::Tap, Path::Class, POSIX, Scalar::Util, Syntax::Feature::Maybe, Syntax::Feature::Perform, Syntax::Feature::Ql, Syntax::Feature::Qwa, true Try::Tiny, utf8::all. AUTHOR Toby Inkster . COPYRIGHT AND LICENCE This software is copyright (c) 2012 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.