作者giacch (小a)
看板Perl
标题Re: [问题] exists的用法
时间Mon Oct 20 12:36:40 2008
※ 引述《yingwan (yingwan)》之铭言:
: 又卡住了....只要上来求助前辈了
: 我想要用perl CGI 写一个使用户登入的网页
: 程式会先检查档案里里有没有这个帐号存在,
: 有的话就会出现该用户的email,没有的话程式就会说"该用户不存在"
: 写了半天网页都一直出现email,也不管有没有哪个ID存在
: 希望前辈们帮我看看我是哪里写错,谢谢大家
: #!/usr/bin/perl
: #--------------------------------------------------------
: #Login page for userID and password
: #if userID already exist or missing input, show error msg
: #otherwise, show user's email address
: #--------------------------------------------------------
: use CGI qw(:standard -debug);
: use CGI::Carp qw(fatalsToBrowser);
: #get input
: $userid= param ("userid");
: $password= param ("password");
: $file="hw6-22.out";
: open(IN,$file) || die "can't read $file";
: @all = <IN> ;
: close(IN);
: chomp @all;
: #checking for existing userID
: %all=();
: foreach (@all) {
: ($userid, $password, $email) = split(/,/,$_);
: $all{$userid} =$password;
: }
: if (exists $all{$userid}) {
: print header();
: print start_html(-title=>"Existing ID");
: print h2("Your email address:");
: print p("$email");
: exit;
: }
: # check for missing input
: if ($userid eq "") { push(@missing,"User ID"); }
: if ($password eq "") {push (@missing, "Password");}
: $missing= join(", ",@missing);
: if ($missing) {
: print header();
: print start_html(-title=>"missing input");
: print h2("Incomplete Input");
: print p("You did not enter <b>$missing</b>");
: print end_html();
: exit;
: }
: else
: {
: print header();
: print start_html(-title=>"Not exist");
: print p("<b>The UserId does not exist </b>");
: print end_html();
: exit;
: }
只列出有修改的部分...
#checking for existing userID
%all=();
foreach (@all) {
next if(/^$/); # 跳过空行
#($userid, $password, $email) = split(/,/,$_);
my ($userid, $password, $email) = split(/,/,$_);
next if($userid == '' or $password == '' or $email == ''); # 跳过资料有缺的
#$all{$userid} =$password;
$all{$userid}{'password'} =$password;
$all{$userid}{'email'} =$email;
}
#if (exists $all{$userid}) {
if (exists $all{$userid}{'password'}) {
print header();
print start_html(-title=>"Existing ID");
print h2("Your email address:");
# print p("$email");
print p("$all{$userid}{'email'}");
exit;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.232.236.185
※ 编辑: giacch 来自: 118.232.236.185 (10/20 12:53)
1F:→ giacch:跳过 空行 与 资料有缺 用意在检查资料格式是否正常... 10/20 12:56
2F:→ giacch:大略检查而已(不够严谨)... 不是问题的重点啦... XD 10/20 12:59
3F:推 yingwan:大感谢...可以问一下有加my跟没加的差别吗? 10/21 09:28
4F:→ giacch:我只知道my能宣告成区域变数... 详细我也不甚了解... 10/21 11:13
5F:→ giacch:希望有大大能给个简单的定义或解释~ (我是初学者... orz 10/21 11:14