Devel::StackTrace::WithLexicals3pm
Devel::stacktrace + padwalker
Usage
use Devel::StackTrace::WithLexicals;sub process_user {my $item_count = 20;price_items();print "$item_count\n"; # prints 21}sub price_items {my $trace = Devel::StackTrace::WithLexicals->new(unsafe_ref_capture => 1 # warning: can cause memory leak);while ( my $frame = $trace->next_frame() ) {my $item_count_ref = $frame->lexical('$item_count');${$item_count_ref}++ if ref $item_count_ref eq 'SCALAR';}}process_user();
Overview
Devel::StackTrace is pretty good at generating stack traces.
PadWalker is pretty good at the inspection and modification of your callers' lexical variables.
Devel::StackTrace::WithLexicals is pretty good at generating stack traces with all your callers' lexical variables.
Methods
All the same as Devel::StackTrace, except that frames (in class Devel::StackTrace::WithLexicals::Frame) also have a "lexicals" method. This returns the same hashref as returned by PadWalker.
Unless the "unsafe_ref_capture" option to Devel::StackTrace is used, then each reference is stringified. This can be useful to avoid leaking memory.
Simple, really.
Copyright and license
Copyright 2008-2009 Shawn M Moore.
Some portions written by Dave Rolsky, they belong to him.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Releases
7 releases since Debian 7 (Wheezy); the text changed 3 times.