gian has asked for the wisdom of the Perl Monks concerning the following question:
$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:Now I implement it like this.my $n=new->new(); $n->get_from_bbc(#some param#) $n->get_from_voanews(#some param#)
But it seem trivial ,I thought if i can do like this .It will be betterpackage 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 the problem is that inside anonymous sub I don't know the other call the sub bypackage 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; }; }
or$n->get_from_bbc(#some param#)
!$n->get_from_voanews(#some param#)
|
|---|