NAME
    Exporter::LexicalVars - export lexical variables

SYNOPSIS
            BEGIN {
                    package MyVars;
                    use Exporter::LexicalVars -setup => {
                            '$pi'   => 3.14159,
                            '$foo'  => sub {
                                    my $ref = shift;
                                    $$ref = "Hello world";
                            },
                    };
            };
        
            use Data::Dumper;
        
            my $pi = 3;
        
            {
                    use MyVars;
                    print Dumper($pi);     # 3.14159
                    print Dumper($foo);    # Hello world
            }
        
            print Dumper($pi);        # 3
        
            {
                    use MyVars qw( $foo );
                    print Dumper($pi);     # 3
                    print Dumper($foo);    # Hello world
            }

DESCRIPTION
    Exports lexical (`my`) variables.

    In the setup hashref, you can provide either non-reference values to
    define in the caller's lexical context, or you can provide initializers as
    coderefs.

    Initializers are called with a reference to the variable which has been
    defined in the caller's lexical context. You can use that reference to not
    just assign it a value, but potentially mark the variable as read-only, or
    tie the variable, or whatever.

    Lexical scalar, array and hash variables are each supported. In the case
    of arrays and hashes, providing `undef` in the setup hashref will
    initialize them to empty, but otherwise you must initialize them with an
    initializer coderef; not a non-reference scalar value.

    Exporter-style "tags" may also be defined:

            BEGIN {
                    package MyVars;
                    use Exporter::LexicalVars -setup => {
                            '$pi'     => sub { ... },
                            '$e'      => sub { ... },
                            ':maths'  => [qw( $pi $e )],
                    };
            };
        
            use MyVars qw( :maths );
            use MyVars -maths;           # this works too

    A tag called `:all` will be automatically set up for you. If your exporter
    is called without any arguments, then it will export a tag called
    `:default` if it exists, or `:all` otherwise.

BUGS
    Please report any bugs to
    <http://rt.cpan.org/Dist/Display.html?Queue=Exporter-LexicalVars>.

SEE ALSO
    Exporter::Tiny, Exporter, Sub::Exporter, perldata.

    <http://www.perlmonks.org/?node_id=1080253>.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
    This software is copyright (c) 2014 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.