我在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"
任何想法? 请注意,部分代码已被删除。
答案 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
。