in reply to deref question

The two are not equivalent. Given that the item being shifted is a reference to a scalar, the first case makes a copy of the reference, in the sense that "$rs_en1" is also a reference to the same scalar -- i.e. it points to the same location in memory, and using it as a reference affects that location.

Meanwhile, the second case de-references the item being shifted, and so assigns the value of the scalar to $en1 -- as a result, $en1 contains a copy of the value and this copy has its own distinct location in memory, separate from the location pointed to by the reference that was shifted.