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

标签 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 行末尾的 ;,但这导致了第 3 行的语法错误。你的计算机无法知道你打算写一个 ; 在第 2 行,尝试猜测会适得其反。

只有事后诸葛亮——您可以记住自己的意图——您才能看到错误输出与您亲眼所见之间的差异。

总之,输出正确的;它只是报告与您正在寻找的东西略有不同的东西……而您正在寻找的东西是棘手的。学习阅读错误消息并将其转化为您发现人为错误所需的知识是一项非常宝贵的程序员技能,并且通过实践自然而然地获得。

关于perl - 有没有办法让 Perl 报告错误的确切行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769347/

相关文章:

perl - 将标量和散列传递给 Perl 中的子程序

regex - 替换终端中所有文件中的多行字符串

performance - Perl 创建对象非常慢

Perl IO::Socket 连续读/写

perl - 如何检查对象是否具有特定方法?

Perl 打包/解包/移位

mysql - 在 Perl 中工作 MySQL 查询失败

arrays - Perl:请向我解释 while() 的以下行为

Perl:如何找到已知子文件夹的父文件夹?

perl - 如何传递一系列数字(例如 : 100 to 200) as command line argument in Perl?