in reply to Updating hash of subroutines

That design will give you trouble. It will be confusing to understand and maintain.

I recommend passing the frame data as arguments to the functions:

my (%frame_lookup_by) = ( 21 => { desc => "S/W Status", value => sub { $_[0]*256 + $_[1]} , }, 33 => { desc => "HK Subcom", value => sub { $_[1] % 16 }, #modulo 16 of w12 }, 117 => { desc => "General Status", value => sub {$_[0]*256 + $_[1] }, }, 129 => { desc => "Sensor Status", value => sub { $_[0]*256 + $_[1] }, }, );
With that you can supply the argument that's in the current scope like so:
my $result = $ref_frame_lookup_by{33}->{value}->(@minor_frame_data);

After Compline,
Zaxo