#!/usr/bin/perl use Data::Dumper; use Devel::Peek; { package Foo; sub new { my $class = shift; my $val = shift; return bless { thing=>$val }; } sub val { my $self = shift; return "val: " . (++$self->{theVal}); } sub DESTROY { print "destroyed at ", ${shift}->{theVal}, "\n"; } } my $b = [ ]; my $t = Foo->new($b); print "--- before print ---\n"; Dump($b); Dump($t); print "--- Do the print ---\n"; print $t->val(), Dump($b), Dump($t), undef($t), Dump($b), Dump($t), ".\n"; print "--- after print ---\n"; Dump($b); Dump($t);