Свищу!
Недавно открыл для себя потрясающую возможность перла - менять в уже выполняющейся программе набор процедур, ну и прочих глобальных объектов через такую "фичу":
$novoproc = 'procedura1';
*{"::$novoproc"} = <<_END_;
код процедуры
_END_
# ну и потом вызываем эту процедуру уж:
&{ *{"::$novoproc"}};
Может показаться, что это бесполезная фича, но применение ей таки есть. Например:
&{ *{"::obrabotka_kataloga_$katalog"}};
# а значение $katalog получаем
# только после запуска программы
Да понятно, что можно и без этой фичи так:
if ( $katalog eq 'kat1' ) {
...
} elsif ( $katalog eq 'kat2' ) {
...
} и так далее;
Но бывает удобно такое разнести по процедурам, ну и в разным других задачках такая фичка небесполезна.
Может быть я такими "анахронизмами" сейчас налил много воды на мельницу хоронильщиков перла. Но они пусть его хоронят себе и дальше, а нам-то он жить не мешает же ведь. 😁