#!/usr/bin/perl use warnings; use strict; package SubLog; sub new { my $class = shift; my $self = { name => (caller(1))[3], }; warn "ENTERING SUB: $self->{name}\n"; bless $self, $class; } sub DESTROY { my $self = shift; warn "EXITED SUB: $self->{name}\n"; } package main; sub blahblah { my $sublog = SubLog->new; return 5; } sub blahsub { my $sublog = SubLog->new; blahblah(); return 3; } blahsub();