my @mask_by_offset = ( ( ~0x0000_000F ) x 4, ( ~0x0000_00FF ) x 4, ( ~0x0000_0FFF ) x 4, ( ~0x0000_FFFF ) x 4, ( ~0x000F_FFFF ) x 4, ( ~0x00FF_FFFF ) x 4, ( ~0x0FFF_FFFF ) x 4, ( ~0xFFFF_FFFF ) x 4, ); $val &= $mask_by_offset[$offset];