如何获取__LINE__用于调用函数?

时间:2014-07-03 13:59:06

标签: perl

基本上,我的问题是this,除了perl而不是PHP。

我知道warn()管理它,但是再次warn()是核心perl,所以我知道它是否通常是不可能的。

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

有一个功能

sub logm
{
  my ($msg, $line_no) = @_;
  # ... 
}

我想要包含__LINE __(和__FILE__,但没有必要),但不要像我现在那样将它作为参数包含在内。

# This is attrocious
logm "That file handle is now closed", __LINE__;

1 个答案:

答案 0 :(得分:6)

检查caller功能,

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

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

logm("message");