in reply to How can I find the calling object?
HTHpackage NewObj; sub new { return bless {},$_[0] }; package Foo; our @ISA=qw(NewObj); sub call_bar { my ($self,$bar)=@_; $bar->who_called; } package Bar; use strict; use warnings; use overload; #VITAL! our @ISA=qw(NewObj); sub who_called { my ($self)=@_; package DB; unless (my (undef,undef,undef,$sub)=caller(1)) { print "Called from main\n"; } else { print "Called from $sub\n"; if (ref($DB::args[0]) and overload::StrVal($DB::args[0])=~/=/) { print "\tWhich is a method that was invoked on ".overload::Str +Val($DB::args[0])."\n"; } else { print "@DB::args"; } } } package main; my $obj1=Foo->new(); my $obj2=Bar->new(); print "OBJ1 (Foo) : ".overload::StrVal($obj1)."\n" $obj1->call_bar($obj2);
--- demerphq
my friends call me, usually because I'm late....
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: How can I find the calling object?
by John M. Dlugosz (Monsignor) on Nov 19, 2002 at 19:21 UTC | |
by demerphq (Chancellor) on Nov 20, 2002 at 13:32 UTC | |
by John M. Dlugosz (Monsignor) on Nov 20, 2002 at 15:43 UTC | |
by demerphq (Chancellor) on Nov 20, 2002 at 16:48 UTC |