Если вы передадите два списка по значению ... вы получите один большой список в @_
.
my(@list1,@list2) = @_;
не имеет никакого смысла:
#!/usr/bin/perl
sub test
{
my (@a, @b) = @_;
print "@a\n";
print "@b\n";
}
my @array1 = (1,2,3);
my @array2 = (5,6,7);
test(@array1, @array2);
Это закончится печатью:
1 2 3 5 6 7
<blank line>
Чтобы передать два массива, вам нужно передать их по ссылке:
test(\@array1, \@array2);
И в вашем сабе вам нужно рассматривать их как ссылки:
sub test
{
my ($arrayRef1, $arrayRef2) = @_;
print "@$arrayRef1\n";
print "@$arrayRef2\n";
}