NAME
   lexicals - Get a hash of your current 'my' variables

SYNOPSIS
       use Template::Toolkit::Simple;
       use lexicals;

       sub mail {
         my $self = shift;
         my $name = 'Mr. ' . $self->get_name;
         my $address = $self->fetch_address($name);
         my $stamp = Postage::Stamp->new(0.44);
         my $envelope = tt->render('envelope', lexicals);
       }

DESCRIPTION
   Python has a builtin function called "locals()" that returns the
   lexically scoped variables in a name/value mapping. This is a very
   useful idiom. Instead of needing to create a hash like this:

       my $hash = {
         foo => $foo,
         bar => $bar,
       };

   Just say:

       my $hash = lexicals;

   Assuming you have a $foo and $bar defined, you get the same thing.

   The "lexicals" module exports a function called "lexicals". This
   function returns the lexicals as a hash reference (in scalar or list
   context).

ARRAYS AND HASHES
   The above examples deal with lexical scalars. You can also get back
   lexical arrays and hashes. Note: since there is no sigil to tell scalars
   from arrays from hashes, you can't get back a scalar and an array or
   hash of the same name. In this case, SCALAR beats HASH beats ARRAY. Why?
   Because I said so! (Actually I just used the sort order of the sigils).

       sub foo {
         my %h = ( O => 'HAI' );
         my @a = [ qw( foo bar baz ) ];
         my $s = 42;
         my %x = ( O => 'HAI' );
         my @x = [ qw( foo bar baz ) ];
         my $x = 42;
         print Dump lexicals;
       }

   would yield:

       ---
       a:
       - foo
       - bar
       - baz
       h:
         O: HAI
       s: 42
       x: 42

NOTE
   The "lexicals" function only reports the lexical variables variables
   that were defined before where it gets called.

DEBUGGING TRICK
   This could be a handy idiom for debugging:

       use XXX;

       sub foo {
         ...
         XXX lexicals;     # See your lexicals in the nude.
         ...
       }

SEE ALSO
   *   PadWalker

   *   Acme::Locals

   *   XXX

AUTHOR
   Ingy döt Net <[email protected]>

COPYRIGHT AND LICENSE
   Copyright 2011-2015. Ingy döt Net.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.

   See <http://www.perl.com/perl/misc/Artistic.html>