@sources = ( { pre => [sub { print 1; }, sub { print 2; last pre; }, sub { print 3 }], post => [sub { print 4; }, sub { print 5; last source }] }, { pre => [sub { print "badness" }] } ); source: for (@sources) { pre: for (@{$_->{pre}}) { $_->(); } post: for (@{$_->{post}}) { $_->(); } } __END__ 1 2 4 5