Приведем текст модуля Mod1.
package Mod1; require Exporter; @ISA = qw(Exporter); #Экспортирование функции по умолчанию @EXPORT = qw(reverselist); #Экспортируемый массив по запросу @EXPORT_OK = qw(@MyArgs); sub reverselist { my ($x, $i); #Создание локальных переменных #Создание локального массива и #копирование в него параметров @MyArgs = @_; #Цикл для обмена первого элемента с последним, #второго с предпоследним и т.д. for ($i = 0; $i < $#MyArgs/2; $i++) { $x=$MyArgs[$i]; $MyArgs[$i] = $MyArgs[$#MyArgs - $i]; $MyArgs[$#MyArgs - $i]=$x; } }
Мы, для примера, экспортируем функцию по умолчанию, а массив - по запросу. В цикле мы меняем местами первый и последний элементы, второй и предпоследний и т.д.
Приведем текст модуля Mod2.
package Mod2;
require Exporter;
@ISA = qw(Exporter);
#Экспортируемый массив по умолчанию
@EXPORT = qw(@list);
@list=(1,2,3,4,5);
Здесь массив экспортируется по умолчанию.
Приведем текст основной программы. Он очень простой:
#! perl -w #Подключение модулей #Просим вернуть массив @MyArgs use Mod1 qw(:DEFAULT @MyArgs); #Возврат массива @list по умолчанию use Mod2 qw(:DEFAULT); print "Исходный массив: @list\n"; reverselist @list; print "Итоговый массив: @MyArgs\n";
Здесь все очень посто. Подключаем два модуля, выводим массив до его обработки функцией и после.
Текст этой программы и модулей можно взять здесь.
Результат работы приложения изображен на рисунке 1.
Рис.1. Пример работы скрипта