[perl] 続・初めてのPerl 第10章 「大規模なプログラムの構築」

練習問題の回答をメモ。

ex10-1
package Oogaboogoo;
use strict;
use warnings;

my @day = qw(ark dip wap sen pop sep kir);
sub number_to_day_name {
  my $num = shift @_;
  die "Input number must be between 0 and 6!: $!" if $num < 0 || $num > 6;
  $day[$num];
}

my @month = qw(diz pod bod rod sip wax lin sen kun fiz nap dep);
sub  number_to_month_name {
  my $num = shift @_;
  die "Input number must be between 0 and 11!: $!" if $num < 0 || $num > 11;
  $month[$num];
}
1;
ex10-2
#!/usr/bin/perl
use strict;
use warnings;

require 'perl_lib/ex10-1.pm';

my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;

my $Ooga_wday = Oogaboogoo::number_to_day_name($wday);
my $Ooga_mon = Oogaboogoo::number_to_month_name($mon);

$year += 1900;
print "Today is $Ooga_wday, $Ooga_mon $mday, $year\n";

反省点

&localtime が返す $year は 1900 年からの経過年だよ。気をつけよう。