use strict; use warnings; package MyClass; use Tie::Array; our @ISA = ('Tie::Array'); our @data; # mandatory methods sub TIEARRAY { my $class = shift; bless \@data, $class; @data = @_; return \@data } sub FETCH { my ($self, $index ) = @_; print "FETCH($index)\n"; return $data[$index] } sub STORE { my ($self, $index, $value) = @_; print "STORE($index)\n"; $data[$index] = $value } sub FETCHSIZE { print " "; return scalar @data } package main; my @x; tie @x, "MyClass", 0, 0, 0; my $x = \$x[2]; $$x++; print "@x\n";