模块通常使用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 还拥有数以千计由 Perl 社区创建的额外模块,可供安装。 Perl 轨道使用 cpanfile 来安装一组模块,这些模块可与 Exercism 的 Perl 测试运行器配合使用。
在本练习中,你将为一家美容院开发一个预约安排程序。
你有三个任务,它们都与预约日期有关。
实现appointment_has_passed子程序,它接收一个日期字符串,并检查该预约时间是否已经过去:
appointment_has_passed("2019-07-25T13:45:00")
// => true
日期字符串会以 ISO 8601 日期时间格式传入:YYYY-mm-ddTHH:MM:SS
你需要实现私有的_parse_datetime子程序。
这里为你推荐两个模块:
实现is_afternoon_appointment函数,它接收一个日期字符串,并检查该预约是否在下午(>= 12:00 且 < 18:00):
is_afternoon_appointment("2019-07-25T13:45:00")
// => true
实现describe_appointment函数,它接收一个日期字符串,并返回对该日期和时间的描述:
describe_appointment("2019-07-25T13:45:00")
// => "You have an appointment on 07/25/2019 1:45 PM"
注意,小时的范围是 0-12,没有前导零或空格。