2013年9月24日火曜日

開発環境

『続・初めての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 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
binmode STDERR, ':utf8';

{
    package MyDate;
    use Carp;
    
    sub new { bless {}, $_[0] }
    sub DESTROY {}
    my %methods = (
        'day' => 3,
        'month' => 4,
        'year' => 5
    );
    sub AUTOLOAD {
        our $AUTOLOAD;
        (my $method = $AUTOLOAD) =~ s/.*:://s;
        
        unless( exists $methods{$method} ) {
            carp $AUTOLOAD;
            return;
        }
        
        my $i = $methods{$method};
        
        given( $method ){
            when('day' ) { return (localtime)[$i]; }
            when( 'month' ) { return (localtime)[$i] + 1; }
            when( 'year' ) { return (localtime)[$i] + 1900; }
        }
    }
}

my $date = MyDate->new();

$date->wday; # これはcarp
say "day: ", $date->day, " month: ", $date->month, " year: ", $date->year;

入出力結果(Terminal)

$ ./sample.pl
MyDate::wday at ./sample.pl line 41.
day: 24 month: 9 year: 2013
$

0 コメント:

コメントを投稿