PadWalker - play with other peoples' lexical variables
use PadWalker qw(peek_my peek_sub); ...
PadWalker is a module which allows you to inspect (and even change!) lexical variables in any subroutine which called you. It will only show those variables which are in scope at the point of the call.
The peek_my routine takes one parameter, the number of call levels to go back. (It works the same way as caller() does.) It returns a reference to a hash which associates each variable name with a reference to its value. The variable names include the prefix, so $x is actually '$x'.
peek_my
For example:
my $x = 12; my $h = peek_my (0); ${$h->{'$x'}}++; print $x; # prints 13
Or a more complex example:
sub increment_my_x { my $h = peek_my (1); ${$h->{'$x'}}++; } my $x=5; increment_my_x; print $x; # prints 6
The peek_sub routine takes a coderef as its argument, and returns a hash of the lexical variables used in that sub.
peek_sub
Robin Houston <robin@cpan.org>
With contributions from Richard Soberberg, and bug-spotting from Peter Scott.
Devel::LexAlias, Devel::Caller, Sub::Parameters
Copyright (c) 2000-2002, Robin Houston. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
To install PadWalker, copy and paste the appropriate command in to your terminal.
cpanm
cpanm PadWalker
CPAN shell
perl -MCPAN -e shell install PadWalker
For more information on module installation, please visit the detailed CPAN module installation guide.