If you pass two arrays (or two lists) to a subroutine, they will be flattened into a single array contained in
@_.
You need to pass array references when calling the szubroutine, something like this:
remove_x99(\@dead_list, \@get_list);
Then, within the subroutine, you can either access directly the elements refered to by the array refs:
sub remove_x99 {
my $dead_list_ref = shift;
my $get_list_ref = shift;
my %lookup = map {$_ => 1} @$get_lisr_ref;
# ...
or, if you find it clearer, start by unpacking the arguments:
sub remove_x99 {
my $dead_ref = shift;
my @dead-list = @$dead-ref;
#...
Update: there are two typos on the last code line above (due to my clumsiness on the small keyboard of my mobile device on which I typed this message and to the fact that my train was arriving at my place of arrival and I therefore did not take enough time to review what I had written). The last line should be:
my @dead_list = @$dead_ref;