Section A.9. Answers for Chapter 10


A.9. Answers for Chapter 10

A.9.1. Exercise 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.pm within a directory of Oogaboogoo in one of the directories given in your @INC variable, such as the current directory.

A.9.2. Exercise 2

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

 use strict; require 'Oogaboogoo/date.pm'; 

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"; 




Intermediate Perl
Intermediate Perl
ISBN: 0596102062
EAN: 2147483647
Year: N/A
Pages: 238

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net