Appendix A. Answers to Exercises
Contents:
Answers for Chapter 2Answers for Chapter 3Answers for Chapter 4Answers for Chapter 5Answer for Chapter 6Answers for Chapter 7Answers for Chapter 8Answer for Chapter 9Answer for Chapter 10Answer for Chapter 11Answer for Chapter 12Answers for Chapters 13-15This appendix contains the answers to the exercises presentedthroughout the book.
A.1. Answers for Chapter 2
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.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);
The year number is offset by 1900 for historical purposes, so you
need to fix that:
$year += 1900;
Finally, it''s time for the output:
print "Today is $day_name, $mon_name $mday, $year.\n";