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

时间:2015-10-29 17:11:09

标签: perl data-dumper

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

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

warn "string";
warn Dumper("string");

第一次打印:

string at dumper.pl line 6.

第二次打印只是:

$VAR1 = 'string';

没有任何行号。

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

3 个答案:

答案 0 :(得分:5)

产生差异的原因是因为字符串以新行结束。

warn "test";
warn "test\n";

来自Dumper的输出包含一个换行符,所以最后的任何内容都可以执行。

或者只是明确引用__LINE__

warn Dumper ("error") . "at line:" .__LINE__."\n";

(见perldoc warn

答案 1 :(得分:3)

只需在Dumper呼叫后连接一个字符串:

warn Dumper("string").' ';

产量

$VAR1 = 'string';
  at /tmp/execpad-a668561a2ac4/source-a668561a2ac4 line 7.

eval.in

答案 2 :(得分:2)

请参阅warn功能的文档:

$ perldoc -f warn

warn LIST
        Prints the value of LIST to STDERR. If the last element of LIST
        does not end in a newline, it appends the same file/line number
        text as "die" does.

        (... and much more information that is worth reading ...)

在您的情况下,Dumper()的输出以换行符结尾,因此不会打印文件/行号。