in reply to BEGIN, strict, and variable assignment

If you put the number of tests into a plan command (not in the use Test::More statement), you don't need to have %tests available at BEGIN-time:
use Test::More; my %tests = ( foo => .. bar => .. ); plan tests => (keys(%tests) * 5 + 1); # etc

blokhead