如何在Perl中找到打印声明的源位置?

前端之家收集整理的这篇文章主要介绍了如何在Perl中找到打印声明的源位置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在Perl中找到打印声明的源位置?
#!/usr/bin/perl

foo();
bar();

sub foo {
  print "foo\n";
}

sub bar {
  print "bar\n";
}

输出为:

>perl test.pl 
foo
bar

我想以某种方式找到能够看到(或类似的东西)

>perl test.pl 
main::foo> foo
main::bar> bar

原因是我正在尝试追踪一些胭脂输出,并且找不到它的位置在一个大的代码库.

解决方法

尝试这个:
#!/usr/bin/env perl

use strict;
use warnings;
use Tie::STDOUT print => sub {
  my ( $pkg,$file,$line ) = caller(2);
  print "$pkg,$line :: ",@_;
};

print "Hello,World\n";

这使:

$perl tp.pl
main,tp.pl,10 :: Hello,World

更新:我刚刚发布了Devel::Ditto

$perl -MDevel::Ditto myprog.pl
[main,t/myprog.pl,9] This is regular text
[main,10] This is a warning
[MyPrinter,t/lib/MyPrinter.pm,7] Hello,World
[MyPrinter,8] Whappen?
原文链接:https://www.f2er.com/Perl/171561.html

猜你在找的Perl相关文章