my @targ_shift = ( [ \$a, 0 ], [ \$a, 8 ], [ \$a, 16 ], [ \$a, 24 ], [ \$b, 0 ], [ \$b, 8 ], [ \$b, 16 ], [ \$b, 24 ], [ \$c, 8 ], [ \$c, 16 ], [ \$c, 24 ], ); for my $idx (0 .. $len-1) { my ($targ, $shift) = @{$targ_shift[$idx]}; $$targ += $k[$idx] << $shift; }