sub trigger{print "Triggered ".shift."(@_)\n"} #must go BEFORE the eval is seen {#bare block because package BLOCK appeared only 5.14 package Arraytrigger; use Tie::Array; use vars qw(@ISA); @ISA = ('Tie::StdArray'); for (qw(STORE CLEAR PUSH POP SHIFT UNSHIFT)) { my $s = "SUPER::$_"; no strict 'refs'; *$_ = sub { main::trigger($s, @_); shift()->$s(@_) }; } } tie my @arr, 'Arraytrigger'; @arr = qw(Doky); $arr[0] =~ tr/y/i/; s/D/L/ for @arr;