2013年2月11日月曜日

開発環境

『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也田中 慎司吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9)の14章(オブジェクトに関する高度なトピックス), 14.7(練習問題)1.を解いてみる。

その他参考書籍

1.

コード(BBEdit)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;

{
    package MyDate;
    use Carp;
    my %methods = qw(day 3 month 4 year 5);
    my @offset = qw(0 0 0 0 1 1900);
    sub new {
        my $class = shift;
        bless {}, $class
    }
    sub DESTROY {}
    sub AUTOLOAD {
        our $AUTOLOAD;
        (my $method = $AUTOLOAD) =~ s/.*:://s;
        unless (exists $methods{$method}){
            carp "メソッド名($AUTOLOAD)がわからない";
            return;
        }
        my $i = $methods{$method};
        (localtime)[$i] + $offset[$i];
    }
}

my $date = MyDate->new;
print "day: " . $date->day . "\n";
$date->abcde;
print "month: " . $date->month . "\n";
print "year: " . $date->year . "\n";

入出力結果(Terminal)

$ ./sample.pl
day: 11
Wide character in warn at /opt/local/lib/perl5/5.16.1/Carp.pm line 102.
メソッド名(MyDate::abcde)がわからない at ./sample.pl line 33.
month: 2
year: 2013
$

0 コメント:

コメントを投稿