본문 바로가기

program

[perl] 연습문제 3 (file open / file close)

연습문제 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: $!";            ## 파일 닫음. 실패되면 정지

}