1#!perl -w 2 3use strict; 4use Test qw(plan ok); 5use Data::Dump qw(dump); 6 7plan tests => 4; 8 9{ 10 package MyTie; 11 12 sub TIE { 13 my $class = shift; 14 bless {}, $class; 15 } 16 17 use vars qw(*TIEHASH *TIEARRAY *TIESCALAR); 18 *TIEHASH = \&TIE; 19 *TIEARRAY = \&TIE; 20 *TIESCALAR = \&TIE; 21 22 sub FIRSTKEY { 23 return "a"; 24 } 25 26 sub NEXTKEY { 27 my($self, $lastkey) = @_; 28 return if $lastkey eq "d"; 29 return ++$lastkey; 30 } 31 32 sub FETCHSIZE { 33 return 4; 34 } 35 36 sub FETCH { 37 my($self, $key) = @_; 38 return "v$key" if defined $key; 39 return "v"; 40 } 41} 42 43my(%hash, @array, $scalar); 44tie %hash, "MyTie"; 45tie @array, "MyTie"; 46tie $scalar, "MyTie"; 47 48ok(nl(dump(\%hash)), <<EOT); 49{ 50 # tied MyTie 51 a => "va", 52 b => "vb", 53 c => "vc", 54 d => "vd", 55} 56EOT 57 58ok(nl(dump(\@array)), <<EOT); 59[ 60 # tied MyTie 61 "v0" .. "v3", 62] 63EOT 64 65ok(nl(dump($scalar)), <<EOT); 66"v" 67EOT 68 69ok(nl(dump($scalar, $scalar, $scalar)), <<EOT); 70("v", "v", "v") 71EOT 72 73sub nl { shift(@_) . "\n" } 74