NAME
Module::Quote - a quote-like operator that requires modules for you
SYNOPSIS
use Test::More tests => 1;
use Module::Quote;
my $number = qm( Math::BigInt 1.00 )->new(42);
isa_ok $number, "Math::BigInt";
DESCRIPTION
The `qm()` quote-like operator will load a module and return its name. So
the following should just work, even if you haven't `use`d Math::BigInt in
advance.
qm( Math::BigInt 1.00 )->new(42)
The more usual invocation:
Math::BigInt->new(42)
won't automatically load Math::BigInt, won't check a version number, and
crucially is ambiguous! (See what happens when you define a sub called
`BigInt` in the `Math` package.)
The `qm` operator interpolates variables, so this works too:
my $x = "BigInt 1.00";
qm( Math::$x )->new(42);
You may export `qm` with an alternative name:
use Module::Quote 'qmod';
You may provide a hashref of options for the quote-like operator:
use Module::Quote qm => { emulate => 'q' };
You can export the operator multiple times with different options:
use Module::Quote
qm => { emulate => 'q' },
qqm => { emulate => 'qq' },
;
The `optimistic` and `prefix` options from Module::Hash are supported. As
is `emulate` which can be set to "qq" (the default) or "q" (to disable
interpolation).
BUGS
Please report any bugs to
<http://rt.cpan.org/Dist/Display.html?Queue=Module-Quote>.
SEE ALSO
Module::Hash - similar idea, but less magic.
AUTHOR
Toby Inkster <tobyink@cpan.org>.
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.