NAME¶
true - automatically return a true value when a file is required
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.
SEE ALSO¶
- •
- latest
- •
- Modern::Perl
- •
- nonsense
- •
- perl5i
- •
- Toolkit
- •
- uni::perl
AUTHOR¶
chocolateboy, <chocolate@cpan.org>
COPYRIGHT AND LICENSE¶
Copyright (C) 2010-2011 by chocolateboy
This 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.