Perl 如何获取调用函数的_行_?

Perl 如何获取调用函数的_行_?,perl,Perl,基本上,我的问题是perl而不是PHP 我知道warn()管理它,但是warn()是perl的核心,所以如果它通常不可能的话,我会理解 附录(如果链接最终失败) 有作用 sub logm { my ($msg, $line_no) = @_; # ... } 我想包括_行_(和_文件_,但这不是必需的),但不想像我现在这样每次都将其作为参数 # This is attrocious logm "That file handle is now closed", __LINE__; 检

基本上,我的问题是perl而不是PHP

我知道warn()管理它,但是warn()是perl的核心,所以如果它通常不可能的话,我会理解

附录(如果链接最终失败) 有作用

sub logm
{
  my ($msg, $line_no) = @_;
  # ... 
}
我想包括_行_(和_文件_,但这不是必需的),但不想像我现在这样每次都将其作为参数

# This is attrocious
logm "That file handle is now closed", __LINE__;
检查功能

sub logm {
  my ($msg) = @_;
  my ($package, $filename, $line) = caller;

  print "'$msg' from file:$filename; line:$line\n";
}

logm("message");

如果你想记录结构化信息,请使用log4perl。@Jens我有,这是很有帮助的,但在这个特殊的情况下,程序已经大部分编写好了,我只想填充一些基本的堆栈跟踪,这样必须维护这个东西的可怜的家伙就不会恨我了。因为那可怜的草皮,就目前而言,是我,我认为这是值得努力的。