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 "..." } ;にする必要があります。;}

于 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 で囲む必要があり(ます)。また、 1 行目の -condition の;後には使用できません。if

于 2012-12-05T18:45:55.957 に答える