연습문제 1 ~ 2 에 이어지는 내용임.
#!/usr/bin/perl -w
init_words();
print "what is your name? ";
$name = <STDIN>;
chomp ($name);
if ($name =~ /^randal\b/i) { # 정규식으로 ^ 사용, \b 단어 블럭 표시, /i 는 대소문자 구분 없애는것
print "hello, $name ! \n";
} else {
print "hi!, $name \n ";
print "what is your sectret word? ";
$guess = <STDIN>; # 사용자 변수 입력
chomp ($guess); # 빈공란 제거(\n)
while (! good_word($name,$guess)) { # while 은 참일때 반복, 거짓이면 한번만 하고 exit
print "sorry!!, try again!, what is your secret word? ";
$guess = <STDIN>;
chomp ($guess);
}
print "nice to meet you. $name\n";
}
sub good_word {
my($somename,$someguess) = @_; # 인수 지정
$somename =~ s/\W.*//; # 빈칸 뒤에 오는 모든 내용을 빈칸으로 치환
$somename =~ tr/A-Z/a-z/; # 대문자를 소문자로 치환
if ($somename eq "randal") {
return 1; # return 1 은 true 를 의미
} elsif (($words{$somename} || "groucho") eq $someguess) { ## || 는 or 의미
return 1;
} else {
return 0; # return 0 은 false 를 의미
}
}
sub init_words {
open (WORDLIST, "wordlist.txt") || die "can't open wordlist: $!"; ## 파일 오픈. 실패되면 정지 WORDLIST라는 파일핸들로 wordlist.txt 란 파일을 오픈함
while ($name = <WORDLIST>) {
chomp ($name);
$word = <WORDLIST>;
chomp ($word);
$words{$name} = $word;
}
close (WORDLIST) || die "can't close wordlist: $!"; ## 파일 닫음. 실패되면 정지
}
'program' 카테고리의 다른 글
[perl] 연습문제 2 (sub루틴) (0) | 2010.12.08 |
---|---|
관계 연산자 / 등가 연산자 / 논리 연산자 (0) | 2010.12.08 |
[perl] 연습문제 1 (0) | 2010.12.08 |
[c언어] 버그없는 프로그래밍을 하자 (펌) (0) | 2010.04.29 |