Perl语法编译错误

Perl语法编译错误,perl,syntax,compiler-errors,associative-array,Perl,Syntax,Compiler Errors,Associative Array,这是我正在编写的一个程序的一段代码,语法错误在第3行 if($header gt $word{ $wordlist{$word} = $header; $header = $word; return; } 简而言之-第一行缺少右括号 实际上,这很有趣,因为您希望Perl用它的错误消息将您指向正确的位置。然而,由于运气不好,它看起来就像一个完全有效的代码的开始,只是碰巧做了一些你不想做的事情 Perl实际上认为您可以查找名为%word(使用$word{…},赋值值作为键计

这是我正在编写的一个程序的一段代码,语法错误在第3行

if($header gt $word{
    $wordlist{$word} = $header;
    $header = $word;
    return;
}

简而言之-第一行缺少右括号

实际上,这很有趣,因为您希望Perl用它的错误消息将您指向正确的位置。然而,由于运气不好,它看起来就像一个完全有效的代码的开始,只是碰巧做了一些你不想做的事情

Perl实际上认为您可以查找名为
%word
(使用
$word{…}
,赋值值作为键计算)。
因此,如果您这样做,这将是一个完全有效的代码:

if ($header gt $word{
    $wordlist{$word} = $header         # removed the ;
                                }) {   # closed the condition
    $header = $word;
    return;
}

Perl只有在到达第二行末尾并看到
时才会感到困惑

回答得好
use strict
使Perl对
$word{
构造的想法更加清晰。