使用Data :: Dumper结果警告时如何获取行号?

cev*_*ing 0 perl data-dumper

warn 在以下两种情况下表现不同:

#! /usr/bin/perl
use warnings;
use strict;
use Data::Dumper;

warn "string";
warn Dumper("string");
Run Code Online (Sandbox Code Playgroud)

第一次印刷:

string at dumper.pl line 6.
Run Code Online (Sandbox Code Playgroud)

而第二个打印只是:

$VAR1 = 'string';
Run Code Online (Sandbox Code Playgroud)

没有任何行号.

使用Dumper结果警告时如何获取行号?

Sob*_*que 5

区别的原因是因为字符串以新行结束.

warn "test";
warn "test\n";
Run Code Online (Sandbox Code Playgroud)

输出Dumper包括一个换行符,所以最后的任何东西都可以做到.

或者只是明确地引用__LINE__:

warn Dumper ("error") . "at line:" .__LINE__."\n";
Run Code Online (Sandbox Code Playgroud)

(见perldoc warn)