どうか回答よろしくお願いいたします。
#! c:/perl/bin/perl
getForm();
open (FILE, "<./pass.dat") or die;
eval { flock(FILE, 1) };
@data = <FILE>;
close (FILE);
print <<END;
Content-type: text/html
<html>
<head><title>ユーザ認証</title></head>
<body>
END
if ( $form{'id'} eq $data[0] ){
print "Yes\n";
} else {
print "No\n";
}
print <<END;
</body>
</html>
END
#####
sub getForm{
my ($query, $pair);
if ($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
else{
$query = $ENV{'QUERY_STRING'};
}
foreach $pair (split(/&/, $query)){
my ($key, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$form{$key} = $value;
}
}
ファイルの文字列と入力文字列を比較して、合致した場合はYes、違う場合はNoを出力するプログラムです。
しかしながら、合致しているにも関わらずNoしか出力されません。
間違っている点を指摘して頂ければ幸いです。
$data[0] の末尾に改行は入ってませんか?