モジュールは通常、useキーワードで読み込みます。
これはモジュールを読み込むと同時に、そのimportメソッドを呼び出し、エクスポートされたシンボルをインポートします。
パッケージの@EXPORT配列にあるシンボルは、デフォルトでインポートされます。
パッケージの@EXPORT_OK配列にあるシンボルは、明示的にインポートする必要があります。
シンボルをインポートするには、まずエクスポートされている必要があります。 ExporterモジュールはPerlに標準で含まれており、エクスポートを行うための最も便利な方法の1つです。
モジュールを定義する:
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テストランナーで使えるモジュールをいくつかインストールしています。
この演習では、美容サロンの予約スケジューラーに取り組みます。
タスクは3つあり、いずれも予約の日時を扱います。
appointment_has_passedサブルーチンを実装しましょう。このサブルーチンは日付の文字列を受け取り、その予約が過去のものかどうかを確認します。
appointment_has_passed("2019-07-25T13:45:00")
// => true
日付の文字列は、YYYY-mm-ddTHH:MM:SSというISO 8601の日時形式で渡されます。
非公開の_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の範囲で、先頭にゼロや空白が付かないことに注意してください。