加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

确定Perl代码引用的子例程名称

发布时间:2020-12-15 21:19:48 所属栏目:大数据 来源:网络整理
导读:如何确定Perl代码引用的子例程名称?我也想区分命名和匿名子程序。 感谢this question我知道如何打印代码,但我仍然不知道如何得到这个名字。 例如,我想从以下内容获得“inigo_montoya”: #!/usr/bin/env perluse strict;use warnings;use Data::Dumper;$D
如何确定Perl代码引用的子例程名称?我也想区分命名和匿名子程序。

感谢this question我知道如何打印代码,但我仍然不知道如何得到这个名字。

例如,我想从以下内容获得“inigo_montoya”:

#!/usr/bin/env perl

use strict;
use warnings;

use Data::Dumper;
$Data::Dumper::Deparse = 1;

my $sub_ref = &;inigo_montoya;

print Dumper $sub_ref;



# === subroutines ===

sub inigo_montoya {
  print <<end_quote;
I will go up to the six-fingered man and say,"Hello. My name is Inigo
Montoya. You killed my father. Prepare to die."';
end_quote
}

解决方法

为什么不问,编译器看到什么? (它将返回__ANON__在匿名subs上)。
#!/usr/bin/perl

use strict;
use warnings;

my $sub_ref = &;inigo_montoya;


use B qw(svref_2object);
my $cv = svref_2object ( $sub_ref );
my $gv = $cv->GV;
print "name: " . $gv->NAME . "n";


sub inigo_montoya {
    print "...n";
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读