【发布时间】:2015-04-15 05:03:10
【问题描述】:
我有一个 Perl 程序,它一次从数据文件中读取一行,并为每一行数据计算某些统计信息。时不时地,当程序读取我的数据集时,我会收到关于 ...uninitialized value... 的警告,我想知道哪一行数据会生成此警告。
有什么方法可以告诉 Perl 打印(到屏幕或归档)产生错误的数据点?
【问题讨论】:
标签: perl variables runtime-error warnings
我有一个 Perl 程序,它一次从数据文件中读取一行,并为每一行数据计算某些统计信息。时不时地,当程序读取我的数据集时,我会收到关于 ...uninitialized value... 的警告,我想知道哪一行数据会生成此警告。
有什么方法可以告诉 Perl 打印(到屏幕或归档)产生错误的数据点?
【问题讨论】:
标签: perl variables runtime-error warnings
如果您的脚本为每个输入行打印一行,则通过将标准错误与输出一起刷新(使消息出现在“正确”点)来查看错误发生的时间会更简单:
$| = 1;
即开启perl autoflush功能,如How to flush output to the console?中所讨论
(自动)刷新的作用:
【讨论】:
默认情况下,Perl 通常在警告中包含文件句柄和行号;即
>echo hello | perl -lnwe 'print $x'
Name "main::x" used only once: possible typo at -e line 1.
Use of uninitialized value $x in print at -e line 1, <> line 1.
因此,如果您在阅读时进行计算,则会收到相应的警告。
【讨论】: