我在Perl中有一个程序,它从数据文件中一次读取一行,并为每行数据计算某些统计信息。不时地,当程序读取我的数据集时,我收到关于...uninitialized value...
的警告,我想知道哪一行数据会产生此警告。
有什么方法可以告诉Perl打印(屏幕或文件)产生错误的数据点?
答案 0 :(得分:4)
如果您的脚本为每个输入行打印一行,通过将标准错误与输出一起刷新(使消息显示在“右侧”点),可以更容易地查看错误发生的时间:
$| = 1;
也就是说,打开perl autoflush功能,如How to flush output to the console?
中所述什么(自动)冲洗:
答案 1 :(得分:2)
默认情况下,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.
因此,如果您在阅读时进行计算,则会收到相应的警告。