Я создаю несколько модулей Perl, которые будут использовать общие утилиты для открытия и закрытия файлов.Где я могу поместить код, общий для двух модулей Perl?
Например,
mod1.pm
my $in, $out;
sub openf {
my $fname = shift;
open $in, "<", $fname or die $!;
}
sub one {
openf($path);
...
}
mod2.pm
my $in, $out;
sub openf {
my $fname = shift;
open $in, "<", $fname or die $!;
}
sub two {
openf($path);
...
}
Теперь, когда Shoul d Я положил openf
, чтобы код не дублировался?
Честно говоря, это печальный фрагмент кода, на который нужно смотреть: 'open' - прекрасная функция , используй это. Однако, если вы собираетесь написать что-то вроде этого, по крайней мере, имя, если 'open_for_reading', а также включить имя файла в сообщение об ошибке. Во-вторых, почему у вас есть переменные, которые будут использоваться в качестве дескрипторов файлов в области пакета. Это приведет к целую кучу искажений с вашей стороны, чтобы держать вещи прямо. Подумайте больше о своем дизайне, пока у вас еще есть время. –
о первом) Вы должны понимать, что коды, которые я размещаю здесь, являются всего лишь образцовыми кодами. Очевидно, 'openf' делает намного больше материала в фактическом коде. Здесь я абстрагирую код, который необходим для вопроса, а не публикую целых 100 строк за сомнение в одной строке. о вторых) переменные используются в качестве дескрипторов файлов в области пакета, потому что они используются некоторыми подпрограммами в perl-модуле для открытия/закрытия файлов, например. – Lazer