NAME

Acme::Perl::Consensual - check that your version of Perl is old enough to consent

DESCRIPTION

This module checks that your version of Perl is old enough to consent to sexual activity. It could be considered a counterpart for Modern::Perl.

Constructor

new(locale => $locale)

Creates a new Acme::Perl::Consensual object which can act as an age of consent checker for a particular locale.

The locale string should be an ISO 3166 alpha2 country code such as "US" for the United States, "GB" for the United Kingdom or "DE" for Germany. It may optionally include a hyphen followed by a subdivision designator, such as "US-TX" for Texas, United States, "AU-NSW" for New South Wales, Australia or "GB-WLS" for Wales, United Kingdom.

If the locale is omitted, the module will attempt to extract the locale from the LC_LEGAL or LC_ALL environment variable.

Methods

locale

Returns the locale provided to the constructor, or detected from environment variables, lower-cased.

can(%details)

Given a person's details (or a piece of software's details), returns true if they are legally able to consent. For example:

my $can_consent = $acme->can(age => 26, married => 1);

Currently recognised details are 'age' (in years), 'married' (0 for no, 1 for yes) and 'puberty' (0 for no, 1 for yes).

If called with a single scalar argument, acts like UNIVERSAL::can (see UNIVERSAL).

age_of_perl_in_seconds($version)

The age of a particular release of Perl, in seconds. (Actually we don't know exactly what time of day Perl was released, so we assume midnight on the release date.)

If $version is omitted, then the current version.

age_of_perl($version)

As per age_of_perl_in_seconds, but measured in years. Returns a floating point. Use POSIX::floor to round down to the nearest whole number. This method assumes that all years are 365.24 days long, and all days are 86400 (i.e. 24*60*60) seconds long.

perl_can($version)

Shorthand for:

$acme->can(
	age     => POSIX::floor($acme->age_of_perl($version)),
	puberty => 1, # Perl is regarded as a mature programming language
);

Import

Passing a "-check" parameter on import:

use Acme::Perl::Consensual -check;

is a shorthand for:

BEGIN {
	require Acme::Perl::Consensual;
	Acme::Perl::Consensual->new()->perl_can()
		or die "Perl $] failed age of consent check, died";
}

That is, it's the opposite of use Modern::Perl. It requires your version of Perl to be past the age of consent in your locale.

CAVEATS

Most jurisdictions have legal subtleties that this module cannot take into account. Use of this module does not constitute a legal defence.

Even if you obtain consent from Perl, there are practical limits to what you could actually do with it, sexually.

INSTALL

While this distribution is believed to work in any version of Perl 5, it has only been tested so far in Perl 5.8+. In older versions of Perl, Makefile.PL may not run, but the library can be manually installed by copying lib/Acme/Perl/Consensual.pm to an appropriate location.

BUGS

Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Acme-Perl-Consensual.

SEE ALSO

Sex, XXX.

AUTHOR

Toby Inkster <tobyink@cpan.org>, but MSCHWERN deserves at least a little of the blame.

COPYRIGHT AND LICENCE

This software is copyright (c) 2012-2013 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.