hi ,
I am facing a problem .I need to get the alias name ,in order to provide some special info in the anonymous sub .I try it with function "caller",but it seem not effective.
for the sake of clarity,I write a simple example.
$s=sub{
my $name=(caller(0))[3];
my $parent=(caller(1))[3];
print "I am :$name,my parent is :$parent\n"
};
*aa=$s;
my $bb='bb';
*{$bb}=$s;
aa();
bb();
output:
name:main::__ANON__,parent:
name:main::__ANON__,parent:
can you help me ?
#########more clarity explain ##############
I want to create a module get info from different websites.And the other ones can calle my module'api just like this:
my $n=new->new();
$n->get_from_bbc(#some param#)
$n->get_from_voanews(#some param#)
Now I implement it like this.
package news;
sub new
{
*get_from_bbc=sub{
#post GET request to www.bbc.com
get www.bbc.com;
#and do some process
return res;
};
*get_from_voanews=sub{
#post GET request to www.bbc.com
get www.bbc.com;
#and do some process
return res;
}
#and more sub like above
#and more sub like above
#and more sub like above
#and more sub like above
}
But it seem trivial ,I thought if i can do like this .It will be better
package news;
sub new
{
my %news_sites={
get_from_bbc=>'www.bbc.com',
get_from_voanews=>'www.voanews.com',
#more websites#
}
foreach (keys %news_sites)
{
*{$_}=sub{ #post GET request to www.bbc.com
###############
#if i can get the name of Subroutine
#I can do it like this.
############
get %news_sites{$name_of_Subroutine};
#and do some process
return res;
};
}
But the problem is that inside anonymous sub I don't know the other call the sub by
$n->get_from_bbc(#some param#)
or
$n->get_from_voanews(#some param#)
!