## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Appendix A. Answers to Exercises

This appendix contains the answers to the exercises presented throughout the book.

## Exercise 1 (Section 2.10.1)

Here’s one way to do it. First, start with the `package` directive and `use` `strict`:

```package Oogaboogoo::date;
use strict;```

Then define the constant arrays to hold the mappings for day-of-week and month names:

```my @day = qw(ark dip wap sen pop sep kir);
my @mon = qw(diz pod bod rod sip wax lin sen kun fiz nap dep);```

Next, define the subroutine for day-of-week-number to name. Note that this subroutine will be accessible as `Ooogaboogoo::date::day`:

```sub day {
my \$num = shift @_;
die "\$num is not a valid day number"
unless \$num >= 0 and \$num <= 6;
\$day[\$num];
}```

Similarly, you have the subroutine for the month-of-year-number to name:

```sub mon {
my \$num = shift @_;
die "\$num is not a valid month number"
unless \$num >= 0 and \$num <= 11;
\$mon[\$num];
}```

Finally, the mandatory true value at the end of the package:

`1;`

Name this file `date.pl` within a directory of `Oogaboogoo` in one of the directories given in your `@INC` variable, such as the current directory.

## Exercise 2 (Section 2.10.2)

Here’s one way to do it. Pull in the `.pl` file from a place in your `@INC` path:

```use strict;
require 'Oogaboogoo/date.pl';```

Then get the information for the current time:

`my(\$sec, \$min, \$hour, \$mday, \$mon, \$year, \$wday) = localtime;`

Then use the newly defined subroutines for the conversions:

`my \$day_name = Oogaboogoo::date::day(\$wday); my \$mon_name = Oogaboogoo::date::mon(\$mon); ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required