본문 바로가기

program

[perl] 연습문제 2 (sub루틴)

#!/usr/bin/perl -w

 

%words = qw(

fred camel

barney llama

betty alpaca

wilma alpaca

);

 

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);

}

}

 

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 를 의미

}

}