트랙
/
Perl
Perl
/
연습 문제
/
미용실 예약 받기
미용실 예약 받기

미용실 예약 받기

학습 연습 문제

소개

패키지와 모듈

가져오기

모듈은 보통 use 키워드로 불러와요. use를 쓰면 모듈을 불러오는 동시에 그 모듈의 import 메서드를 호출해서, 내보낸 심볼을 모두 가져와요.

패키지의 @EXPORT 배열에 있는 심볼은 기본으로 가져와요. 패키지의 @EXPORT_OK 배열에 있는 심볼은 명시적으로 가져와야 해요.

내보내기

심볼을 가져오려면 먼저 그 심볼을 내보내야 해요. Exporter 모듈은 Perl에 기본으로 포함되어 있고, 내보내기에 가장 편리한 방법 중 하나예요.

모듈을 정의하는 방법:

package Foo;

use Exporter ('import');
our @EXPORT_OK = ('bar');

sub bar { ... }

모듈을 사용하는 방법:

use Foo ('bar');

bar();

코어 모듈

Exporter 외에도 Perl에는 사용할 수 있는 다양한 코어 모듈이 있어요. 여기에서 만날 수 있는 연습 문제에 유용한 예로는 List::Util, Time::Piece, Math::BigRat 등이 있어요.

CPAN

코어 모듈 외에도 CPAN에는 Perl 커뮤니티가 만든 수천 개의 추가 모듈이 있어서 설치해서 쓸 수 있어요. Perl 트랙은 cpanfile을 사용해서 Exercism의 Perl 테스트 러너에서 쓸 수 있는 모듈을 설치해요.

지침

이번 연습 문제에서는 미용실 예약 스케줄러를 만들어 봐요.

과제는 세 가지이고, 모두 예약 날짜를 다뤄요.

1. 예약이 이미 지났는지 확인하기

appointment_has_passed 서브루틴을 구현해요. 이 서브루틴은 날짜 문자열을 받아서 예약이 과거에 있었는지 확인해요:

appointment_has_passed("2019-07-25T13:45:00")
// => true

날짜 문자열은 ISO 8601 날짜 및 시간 형식인 YYYY-mm-ddTHH:MM:SS로 전달돼요.

비공개 서브루틴 _parse_datetime도 구현해야 해요. 몇 가지 모듈을 추천해요:

2. 예약이 오후인지 확인하기

is_afternoon_appointment 함수를 구현해요. 이 함수는 날짜 문자열을 받아서 예약이 오후(12:00 이상, 18:00 미만)인지 확인해요:

is_afternoon_appointment("2019-07-25T13:45:00")
// => true

3. 예약의 시간과 날짜 설명하기

describe_appointment 함수를 구현해요. 이 함수는 날짜 문자열을 받아서 그 날짜와 시간에 대한 설명을 반환해요:

describe_appointment("2019-07-25T13:45:00")
// => "You have an appointment on 07/25/2019 1:45 PM"

참고로 시간은 0-12 범위이고, 앞에 0이나 공백이 붙지 않아요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Perl Exercism

미용실 예약 받기 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Perl 트랙을 개념 5개연습 문제 84개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.