camel

���äȤäȡ��Ȥ����櫓����������ľ�����Τ����ɡ������ƷѾ���Ȥ������ä��Τˤϥ辰�����롣

subtech - Bulknews::Subtech - MobileAgent
�������Ǥ�ʤ��������⤽�⤳�Υ����ɤǤ�ư���ʤ���
̵����꤫���Ф����ʤ뤫��
package MyMobileAgent;
my $i;
sub new {
    my $class = shift;
    my $self = HTTP::MobileAgent->new(@_);
    my $pkg = __PACKAGE__ . "::". $i++;
    no strict 'refs';
    @{$pkg."::ISA"} = (ref $self, __PACKAGE__);
    bless $self, $pkg;
}

�����"Singleton Class"�Ȥ���������ǡ����ҥ祦��II����Advanced Perl Programming 2nd Ed.�˾�äƤ�����ˡ��������ʲ��Τ褦�ˤ���С�$i��Enclose����ɬ�פ��ʤ��ʤ롣

    sub new {
        my $class = shift;
        my $self = HTTP::MobileAgent->new(@_);
        my $id = $self + 0;
        my $pkg = __PACKAGE__ . "::" .  $id;
        no strict 'refs';
        @{$pkg."::ISA"} = (ref $self, __PACKAGE__);
        bless $self, $pkg;
    }

���ҥ祦��II�Ϥ������������ΤäƤ��롣�����"Singleton Method"�ʤ��"Singleton Class"�Ȥ�����ˡ�ǡ���������򤤤Τ����ɡ�instance���Ȥ�package�򤳤�����Ȥ����Τϥ��ʴ��������롣

�̤Τ�����Ȥ��Ƥϡ��ۺ�Object::Prototype��Ȥ�������⤢�롣

use strict;
use warnings;
use lib 'lib';
use HTTP::MobileAgent;
use Object::ProtoType;

my $hm  = HTTP::MobileAgent->new(@ARGV);
my $ma = Object::Prototype->new($hm);
$ma->prototype(is_xhtml => sub {
                   my $self = shift;
                   return 1 if $self->is_docomo and $self->is_foma;
                   return 1 if $self->is_ezweb  and $self->is_win;
                   if ( $self->is_softbank ) {
                       return 1 if $self->is_type_w or $self->is_type_3gc;
                   }
                   return 0;
               });
my $ext = $ma->is_xhtml ? 'xhtml' : 'html';
warn $ext;
__END__
% perl proto.pl "DoCoMo/2.0"
html at proto.pl line 19.
% perl proto.pl "DoCoMo/2.0 N2001"
xhtml at proto.pl line 19.

��������ꡣ

���������Τϥ᥽�å��ɲä���ץ饰����Ǥ��Τ����С�
package HTTP::MobileAgent::Plugin::XHTML;
use strict;

sub import {
    my $class = shift;
    *HTTP::MobileAgent::is_xhtml = sub { ... }
}

1;

����Ǥ���С����⤳���񤫤ʤ��Ƥ⡢

sub HTTP::MobileAgent::is_xhtml { ... }

�Ǥ�Ԥ��롣�������������ΤȤ�������Ͻ������򤱤������ʤ����Ȥ����ȡ��⤷HTTP::MobileAgent::is_xhtml()�����餫����¸�ߤ��Ƥ����顢��¸�Τ��줬��񤭤���Ƥ��ޤ����顣use warnings 'redefine'�������Ƥ���С���񤭤κݤˤϷٹ𤳤��Ф��Ƥ���뤬��Perl�Ǥ�Warning���Ф�����������Τ�����ϡ���Ū����Υե���ʤ餦�ʤ����ꡣ

��Ϥꥯ�饹�Ϥʤ�٤��Ѿ���ǽ�ʷ��ǽ񤤤Ƥ������������Τ������Gisle Aas�Υ⥸�塼�롢�ä�HTML::Parser�����꤬���ͤˤʤ롣

�֤������٤ǥ��饹�򤳤�����ʤ�ơפȤ������⤢��Τ������޳�ưŪ�����ȤäƤ���Τ����顢���饹�Ϻ���¤Τ�Τ򤳤������������Τ���ˤ⡢�Ѿ��Ϥʤ�٤����ݡ��Ȥ����ߤ�����

Dan the Man with Too Many Packages to Juggle