Answers for Chapter 2
Answers for Chapter 3
Answers for Chapter 4
Answers for Chapter 5
Answer for Chapter 6
Answers for Chapter 7
Answers for Chapter 8
Answer for Chapter 9
Answer for Chapter 10
Answer for Chapter 11
Answer for Chapter 12
Answers for Chapters 13-15
This appendix contains the answers to the exercises presented throughout the book.
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.
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";
Copyright © 2003 O'Reilly & Associates. All rights reserved.