Perl语法错误 - "语法错误第15行附近"} else" "

时间:2012-12-05 18:44:23

标签: perl

我在Perl中遇到了一个非常恼人的问题。这是我的代码:

if $password eq "a_secret";
{
    foreach $var (sort(keys(%ENV))) {
        $val = $ENV{$var};
        $val =~ s|\n|\\n|g;
        $val =~ s|"|\\"|g; 
        print '${var}=\"${val}\"\n'
    };
}
else
{
print "<html><head><title>Unauthorized</title></head><h1>Unauthorized</h1><body>You do not have permission to access \printenv\printenv.pl on this server.</body></html>";
}

当我执行此代码时,我收到以下错误消息:

syntax error line 10 near "else"

任何想法? 请注意,部分代码已被删除。

3 个答案:

答案 0 :(得分:5)

有很多值得评论的事情。错误出现在第一行:你在条件周围缺少括号,最后;是多余的。

下一步:在单引号字符串\n中写'...'将无法满足您的需求。

然后,并非真的错,但也不是完全好的风格:print "..." } ;应该;}反转。

答案 1 :(得分:3)

if ($password eq "a_secret")
{
    foreach $var (sort(keys(%ENV))) {
        $val = $ENV{$var};
        $val =~ s|\n|\\n|g;
        $val =~ s|"|\\"|g; 
        print '${var}=\"${val}\"\n';
    }
}
else
{
print "<html><head><title>Unauthorized</title></head><h1>Unauthorized</h1><body>You do not have permission to access \printenv\printenv.pl on this server.</body></html>";
}

答案 2 :(得分:0)

第一个if测试条款必须附加()。此外,在第1行的;条件之后,您无法if