2

我在 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"

有任何想法吗?请注意,一些代码已被删除。

4

3 回答 3

7

要评论的东西太多了。错误在第一行:你在条件周围缺少括号,;最后是多余的。

下一步:\n在单引号字符串中写入'...'不会满足您的要求。

然后,不是真的错了,但也不是很好的风格:print "..." } ;应该有 the;和 the }reversed。

于 2012-12-05T18:48:59.520 回答
4
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>";
}
于 2012-12-05T20:34:02.897 回答
0

第一个if测试子句必须用(and括起来)。此外,您不能;if第 1 行的 - 条件之后。

于 2012-12-05T18:45:55.957 回答