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

前端之家收集整理的这篇文章主要介绍了确定Perl代码引用的子例程名称前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何确定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";
}

猜你在找的Perl相关文章