package Leaker; use Data::Dumper; $Data::Dumper::Indent = 1; %CLASS; *CORE::GLOBAL::bless = sub { my $obj = shift; my $class = shift || caller(); if (exists $CLASS{$obj}) { delete $CLASS{$obj}; } $obj = CORE::bless($obj, $class); if ($class =~ /ObjClass/ or (caller())[1] =~ /file|names|here/) { # print "$obj created\n"; $CLASS{$obj} = join "\n\t", map {join ":", caller($_)} 1; } $obj; }; sub UNIVERSAL::DESTROY { my $obj = shift; if (exists $CLASS{$obj}) { # print "$obj destroyed\n"; delete $CLASS{$obj}; } } sub Leaked { print Dumper(\%CLASS); } 1; #### exec($0, @ARGV);