轨道
/
Perl
Perl
/
练习
/
预约美容
预约美容

预约美容

学习练习

简介

包与模块

导入

模块通常使用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,没有前导零或空格。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Perl Exercism

准备好开始 预约美容 了吗?

注册 Exercism,借助 5 个概念84 个练习 和真人导师指导,学习并掌握 Perl,全部免费。