in reply to Generating HoH...

See Data::Diver:

use Data::Diver qw( DiveVal ); # ... while( <...> ) { @val= split /\t/; DiveVal( \%Tech_fy_r­eldata, \( @val ) )= '0'; }

Might be close to what you wanted (hard to say for sure since you don't show what $npo and $fy_closed are defined as).

- tye