Передаем аргументы в локальные переменные. Переменная $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. Пример работы скрипта