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

Par*_*hot 5 perl

基本上,我的问题是,只是对Perl,而不是PHP.

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

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

有功能

sub logm
{
  my ($msg, $line_no) = @_;
  # ... 
}
Run Code Online (Sandbox Code Playgroud)

我想包含__LINE__(和__FILE__,但这不是必需的),但不希望每次都像现在这样包含它作为参数.

# This is attrocious
logm "That file handle is now closed", __LINE__;
Run Code Online (Sandbox Code Playgroud)

Сух*_*й27 6

检查caller功能,

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

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

logm("message");
Run Code Online (Sandbox Code Playgroud)