2015-04-27 2 views
-2

Как повторно использовать код в том же скрипте в Perl? Либо нам нужно использовать require, либо use. Или, есть ли другой метод/вещь?Как повторно использовать код в том же скрипте в perl

Примечание: сценарий, который я использую, не является функцией.

+0

Вы должны * сделать * его в функцию и взглянуть на ['Exporter'] (https://metacpan.org/pod/Exporter) – Borodin

+2

Если вы хотите повторно использовать код в * том же * скрипте, вы можете просто сделать его функцией (называемой sub) и вызвать ее. Или вы хотите повторно использовать код в нескольких сценариях? В любом случае -1. В результате ваш точный вопрос дает ответы для обоих. – DeVadder

+1

Вы говорите, что хотите использовать файл сценария в двух местах другого скрипта или хотите повторно использовать логику * в * файле сценария? – Axeman

ответ

0

Вот 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(); 
Смежные вопросы