http://qs321.pair.com?node_id=1213040


in reply to Array lookup

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;

Replies are listed 'Best First'.
Re^2: Array lookup
by karlgoethebier (Abbot) on Apr 17, 2018 at 10:09 UTC

    BTW, my @dead-list = @$dead-ref; will result in something like Global symbol "$dead" requires explicit package name (did you forget to declare "my $dead"?).

    Remember The Syntax of Variable Names.

    Best regards, Karl AKA Dr Wisenheimer

    «The Crux of the Biscuit is the Apostrophe»

    perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help

      Thanks. I updated the post with a correction (but did not change the code itself to avoid making your post look strange). I am just a bit clumsy on the keyboard of my mobile device.

        De rien.

        Best regards, Karl

        «The Crux of the Biscuit is the Apostrophe»

        perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help