��ϥ�����ޤȤ��Τ������ä��餤�Ǥ�����Perl 5����ǰ��ֹ����ʴؿ���tie()
���ä��ꤷ�ޤ���
����ȡ�΢�ǽ�����ư�������֥������Ȥ򥳥󥹥ȥ饯�Ȥ����ꡢ�Ȥ��������̤����ȤǤ����ꡢ����������Τ��б�������Τ��Ǽ���褿�ꤹ�롣
�Ȥ����櫓�ǡ�tie()
�ˤĤ��Ƹ�äƤ������Ȥˤ��ޤ��礦��
tie()
�ȤϤʤˤ�?
���Фꡢ�֥��֥������ȤǤϤʤ���perl���Ȥ߹��ߥǡ��������פ�΢�ǥ��֥������Ȳ�������ȤߡפΤ��ȤǤ������줬�ʤ�tie�ȸƤФ�뤫�ȸ����С��ѿ�����ꤵ�줿���饹�˷�ӤĤ��뤫�顢�Ǥ���
�����ڵ򡢼ºݤ˸��Ƥߤޤ��礦��
use strict; use warnings; { package MyScalar; use Carp; sub TIESCALAR { my $pkg = shift; carp "TIESCALAR('$pkg')"; bless \do { my $scalar }, $pkg; } sub FETCH($) { my $this = shift; carp "FETCH($this)"; return $$this; } sub STORE($$) { my ( $this, $value ) = @_; carp "STORE($this, $value)"; $$this = $value; } sub DESTROY { my $this = shift; carp "DESTROY($this)"; } } { tie my $scalar, 'MyScalar'; $scalar = 1; print $scalar, "\n"; $scalar++; print $scalar, "\n"; print 'tied($scalar) = ', tied($scalar), "\n"; tied($scalar)->STORE(3); print $scalar, "\n"; }
CodePad��ư���������Τǡ������Ǥ�Ʊ��ե�������MyScalar
�ѥå�������������Ƥ��ޤ�....�Ȼפäƺ�CodePad�򸫤��������[���褷���Τǥ���ɲ�]���ʤΤǰʾ�ϳƼ��¹Ԥ��Ƥ�������������ʴ����ˤʤä��Ȼפ��ޤ���
TIESCALAR('MyScalar') at tiescalar.pl line 28 STORE(MyScalar=SCALAR(0x181c290), 1) at tiescalar.pl line 29 FETCH(MyScalar=SCALAR(0x181c290)) at tiescalar.pl line 30 1 FETCH(MyScalar=SCALAR(0x181c290)) at tiescalar.pl line 31 STORE(MyScalar=SCALAR(0x181c290), 2) at tiescalar.pl line 31 FETCH(MyScalar=SCALAR(0x181c290)) at tiescalar.pl line 32 2 tied($scalar) = MyScalar=SCALAR(0x181c290) STORE(MyScalar=SCALAR(0x181c290), 3) at tiescalar.pl line 34 FETCH(MyScalar=SCALAR(0x181c290)) at tiescalar.pl line 35 3 DESTROY(MyScalar=SCALAR(0x181c290)) at tiescalar.pl line 0
���Τ��Ȥ��顢�ʲ��Τ��Ȥ��狼��ޤ���
tie my $scalar, 'MyScalar'
�ϡ�TIESCALAR('MyScalar')
��¹Ԥ���$scalar
���ͤ˥�����������ȡ�MyScalar::FETCH()
���¹Ԥ����tied($scalar)->FETCH()
��Ʊ��
$scalar
����������ȡ�MyScalar::STORE()
���¹Ԥ����$scalar = $value
����tied($scalar)->STORE($value)
��Ʊ��
- �������פ�ȴ�����Ȥ����ǡ�
MyScalar::DESTROY()
���¹Ԥ����
�פ���ˡ�tie()
���줿�ѿ����Ф����������֥������Ȥ��Ф���᥽�åɸƤӽФ����Ѵ������ΤǤ���
Scalar�ξ�硢��Ǹ����̤�ʤ��ʤ�����ץ�Ǥ��������줬Array��Hash��File Handle�Ȥʤ�ȡ��⤦�����������ͤФʤ�ʤ��᥽�åɤ������ޤ��������ͤ�����Ʊ���Ǥ����ޤ���Perl 5�ˤ�Tie::Scalar
, Tie::Array
, Tie::Hash
, ������ Tie::Handle
�Ȥ����١������饹�����Ǥ��Ѱդ���Ƥ���Τǡ�������Ѿ������ɬ�פʥ᥽�åɤ����򼫺�Ƴڤ򤹤뤳�Ȥ����ޤ���
�Ȥ�������Damian�����Ϥ���tie���������ʤΤǤ���
"Perl Best Practices" P.451
Don't tie variables or filehandles.
�ѿ���ե�����ϥ�ɥ��tie()
�����
�Τ��ˡ�Perl 5�Υ��֥������Ȼظ����ΤäƤ���С��虜�虜tie()
��𤵤��Ȥ�ľ�˥��֥������Ȥ�Ȥ��Ф����櫓�Ǥ����ºݤ���������®�Ǥ⤢��ޤ���
��������tie()
�����뤪�����ǡ�Perl 4�����Τ�ʤ��ͤǤ�Perl 5�Υ��֥������ȤΥѥ�����Ѥ��뤳�Ȥ�����ޤ�����Perl 5�ˤ��Ȥ߹��ޤ�Ƥ��ʤ���ǽ�����Ω���ʤ��פ褦�˼������뤳�Ȥ��ǽ�ˤʤäƤ��ޤ���
���⤽�⤽������DCONWAY�������ȡ�tie��Ȥ��⥸�塼��򤤤��Ĥ�Ĥ��äƤޤ��� Readonly�ʤ󤫤���ŵ���Ǥ���Tie���餤��DCONWAY������Tie��Readonly��������ơ�Tie�����ʤ�Attribute::Constant��tie�����λ䤬��������ʤ�Ƥʤ󤿤������Ǥ��礦���ͤ���
tie�ϡ�OO���Τ�ʤ��ץ�����ߥ󥰽鿴�ԤˤȤä�Use���٤���ΤǤ���Τ�Ʊ���ˡ�OO�򽬤���Τˤ�(perl�˸¤餺!)�湥�ζ���Ǥ����ȼ���Tie�⥸�塼�������Ǥ���С�Perl 5��OO�Ϥۤ��ȵ������Ȥ��äƤ�褤���餤��
�ߤʤ���⡢��ä�tie����Ѥ��Ƥߤޤ��礦��Perl�ʳ��ˤ���¿�ˤʤ���ǽ�Ǥ������ۤ�ȡ������������Ǥ��衣�������Ȥ�������м��켫���ˤϤʤ�ޤ�����
Dan the Perl Monger
See Also:- perldoc perltie
- perldoc Tie::Scalar
- perldoc Tie::Array
- perldoc Tie::Hash
- perldoc Tie::Handle
�����ޡ��ۤ�Ȥ���ľ���ޤ�����
Dan the Typo Generator