给定子例程引用,有没有办法找出声明子例程的文件和行号?警告和朋友似乎做对了,但我需要外部.这是我的测试程序:
#!/usr/bin/perl -l use strict; use warnings; use B; # line 99 'bin/some_code.pl' { no strict 'refs'; print B::svref_2object(\*{'Foo::some_sub'})->LINE; print B::svref_2object(\&Foo::some_sub)->GV->LINE; } Foo::some_sub(); package Foo; # line 23 'bin/some_file.pl' sub some_sub { warn "Got to here"; }
那输出:
102 102 Got to here at 'bin/some_file.pl' line 24.
线路信息不是我所期望的,所以我假设我做错了(B :: GV有一个相应的FILE方法,但是直到我让LINE工作,它对我来说没用多少).
是否有其他方法来获取此信息,我在上面的代码中做错了什么?
更新:事实证明,如果我没有使用行指令,'FILE'和'LINE'方法似乎工作正常.看起来它可能是B :: GV模块中的错误.