Передаем аргументы в локальные переменные. Переменная $item содержит значение очередного элемента первого массива. Чтобы взять соответствующий элемент второго массива пользуемся конструкцией $mylist2[$nom], $nom - текущий номер элемента второго массива. Затем идет обмен значениями двух переменных, после чего номер элемента увеличивается. Пример работы скрипта изображен на рисунке 1.

    Текст программы:

#! perl -w
sub obmen 
{
  local (*mylist1, *mylist2) = @_;
  $nom = 0;
  foreach $item (@mylist1)
  { 
    $temp = $mylist2[$nom];
    $mylist2[$nom] = $item;
    $item = $temp;
    $nom++;
  }
}

@somelist1=(1,2,3);
@somelist2=(4,5,6);
print "начальные значения: \n\@somelist1=@somelist1\n\@somelist2=@somelist2\n";
obmen(*somelist1, *somelist2);
print "итоговые значения: \n\@somelist1=@somelist1\n\@somelist2=@somelist2\n";


Рис.1. Пример работы скрипта

Текст этой программы можно взять здесь.