in reply to Accessing Arguments inside Subroutines via @_

@_ = ( $item[0], $item[1] );
is effectively
@_ = (); push @_, $item[0], $item[1];
You're not assigning to the alias but replacing them with new scalars. To assign to the aliases, you'll have to list the elements or use an array slice.
( $_[0], $_[1] ) = ...;
or
@_[0..$#_] = ...;