package Tie::StdArray::TestResults; use Tie::Array; @Tie::StdArray::TestResults::ISA = ( 'Tie::StdArray' ); use List::Util qw( first ); sub default_STORE { $_[0]->[$_[1]] = $_[2] } sub STORE { my ( $self, $index, $val ) = @_; return &default_STORE if ref $val ne ref {}; return &default_STORE if ! $val->{ok}; my $first_ok = first { ref $_ eq ref {} and $_->{ok} } @{ $self }; return &default_STORE if ! $first_ok; return $self->default_STORE( $index, $first_ok ); } package main; use Test::More; tie my @test_results, 'Tie::StdArray::TestResults'; Test::More->builder->{Test_Results} = \@test_results;