Вот 3 способа «повторного использования» или повторить код без использования Subs
Eval принимает строку и запускает его в Perl. См. Запись в perldoc perlfunc
с использованием ссылки на код принимает неназванную функцию и ссылается на нее. Затем это можно запустить, как показано.
AUTOLOAD немного сумасшедший. Она анализирует функции вы называете и ищет образцы в имени функции, а затем делает его вести себя так, как будто существует реальная функция с этим именем
Есть множество других способов сделать код «повторное использование» в Perl
#!/usr/bin/perl
#
use warnings;
use strict;
#example : eval
my $x="print qq(cheese\n)";
eval "$x";
#example : code reference
my $code=sub { my $param=shift; print qq(hairy $param\n); };
$code->("goats");
#example : AUTOLOAD
no strict 'subs';
use vars qw/$AUTOLOAD/;
sub AUTOLOAD {
my $full=$AUTOLOAD;
if ($full =~ /panda_(\d)/) {
print "panda " x $1;
print "\n";
}
}
panda_3();
panda_6();
Вы должны * сделать * его в функцию и взглянуть на ['Exporter'] (https://metacpan.org/pod/Exporter) – Borodin
Если вы хотите повторно использовать код в * том же * скрипте, вы можете просто сделать его функцией (называемой sub) и вызвать ее. Или вы хотите повторно использовать код в нескольких сценариях? В любом случае -1. В результате ваш точный вопрос дает ответы для обоих. – DeVadder
Вы говорите, что хотите использовать файл сценария в двух местах другого скрипта или хотите повторно использовать логику * в * файле сценария? – Axeman