有没有办法让Perl报告错误的确切行号

时间:2012-10-07 13:43:06

标签: perl

以下是将产生错误的代码:

#!/usr/bin/env perl
use strict
use warnings FATAL=>'all';

use ExtUtils::Installed;

my $instmod = ExtUtils::Installed->new();

foreach my $module ($instmod->modules())
{
    my $version = $instmod->version($module) || "???";
    print "$module -- $version\n";
    }

不要使用“;”在使用严格

错误:

syntax error at ListModules.pl line 3, near "use strict
use warnings "
Execution of ListModules.pl aborted due to compilation errors.

Perl版本信息:

This is perl 5, version 12, subversion 4 (v5.12.4) built for x86_64-linux-gnu-thread-multi

2 个答案:

答案 0 :(得分:7)

简而言之,。但它并不那么简单。

语法错误和人为错误之间存在差异。您的人为错误是省略了第2行末尾的;,但这导致了第3行的语法错误。您的计算机无法知道您打算写;在第2行,尝试猜测会适得其反。

只有事后的好处 - 你才能记住你的意图 - 你可以看到错误输出与你用眼睛发现的差异。

总之,输出 正确;它只是报告与您正在寻找的东西略有不同......而您正在寻找的东西是无法实现的。学习阅读错误信息并将其转化为发现人为错误所需的知识是一种宝贵的程序员的技能,而且它很自然地来自于实践。

答案 1 :(得分:0)

第2行没有错误。你可以写

use strict
   'vars';

可以通过更改您写入的内容

来解决问题
use strict
;use warnings;

语法错误是表达式中间的use,发生在第3行。