SYNOPSIS
package Contemporary::Perl;
use strict;
use warnings;
use true;
sub import {
strict->import();
warnings->import();
true->import();
}
DESCRIPTION
Perl's "require" builtin (and its "use" wrapper) requires the files it loads to return a true value. This is usually accomplished by placing a single
1;
statement at the end of included scripts or modules. It's not onerous to add but it's a speed bump on the Perl novice's road to enlightenment. In addition, it appears to be a non-sequitur to the uninitiated, leading some to attempt to mitigate its appearance with a comment:
1; # keep require happy
or:
1; # Do not remove this line
or even:
1; # Must end with this, because Perl is bogus.
This module packages this ``return true'' behaviour so that it need not be written explicitly. It can be used directly, but it is intended to be invoked from the "import" method of a Modern::Perl-style module that enables modern Perl features and conveniences and cleans up legacy Perl warts.
METHODS
"true" is file-scoped rather than lexically-scoped. Importing it anywhere in a file (e.g. at the top-level or in a nested scope) causes that file to return true, and unimporting it anywhere in a file restores the default behaviour. Redundant imports/unimports are ignored.import
Enable the ``automatically return true'' behaviour for the currently-compiling file. This should typically be invoked from the "import" method of a module that loads "true". Code that uses this module solely on behalf of its callers can load "true" without importing it e.g.
use true (); # don't import sub import { true->import(); } 1;
But there's nothing stopping a wrapper module also importing "true" to obviate its own need to explicitly return a true value:
use true; # both load and import it sub import { true->import(); } # no need to return true
unimport
Disable the ``automatically return true'' behaviour for the currently-compiling file.
EXPORT
None by default.NOTES
Because some versions of YAML::XS may interpret the key of "true" as a boolean, you may have trouble declaring a dependency on true.pm. You can work around this by declaring a dependency on the package true::VERSION, which has the same version as true.pm.AUTHOR
chocolateboy, <[email protected]>COPYRIGHT AND LICENSE
Copyright (C) 2010-2011 by chocolateboyThis library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.