У меня есть набор подпрограмм, которые выглядят так:
sub foo_1($) {
my $name = shift;
my $f;
run_something();
open($f, $name) or die ("Couldn't open $name");
while (<$f>) {
//Something for foo_1()
}
close($f);
do_something_else();
}
И у меня есть примерно четыре или больше, которые выглядят одинаково, единственное, что меняется, - это тело блока while. Я хотел бы абстрагироваться от этого и прекратить копировать код.
Чтобы дать больше контекста, разные подпрограммы foo представляют собой разные конечные автоматы (FSM), которые читают содержимое разных файлов и передать данные в хэш-ссылку. Может быть, есть более разумный поступок, чем то, что я пытаюсь достичь.