{ package LoggedArray; use Tie::Array; our @ISA = ('Tie::StdArray'); sub TIEARRAY { bless [@_[1..$#_]], $_[0] } for my $sub (qw/ FETCHSIZE STORESIZE STORE FETCH CLEAR POP PUSH SHIFT UNSHIFT EXISTS DELETE SPLICE EXTEND /) { no strict 'refs'; *$sub = sub { my $self = shift; warn "$sub @_\n"; $self->${\"SUPER::$sub"}(@_); } } } tie my @array, 'LoggedArray', qw/one two three/; print "<$_>\n" for reverse @array; __END__ FETCHSIZE FETCH 2 FETCH 1 FETCH 0