2010-08-15 5 views
1

Можно ли передавать переменные между несколькими вызовами на aroundMethodModier? пример (который не работает, но мы надеемся, передает то, что я хочу сделать)Пропустить переменные вокруг модификатора метода around

sub mysub { ... }; 

around 'mysub' => sub { 
    my $orig = shift; 
    my $self = shift; 

    my $value = get_value; 

    $self->orig(@_); 
}; 

around 'mysub' => sub { 
    my $orig = shift; 
    my $self = shift; 
    my $value = shift; 

    my $output 
     = "sometext $value" 
     . $self->orig(@_); 
     . 'someothertext $value' 
     ; 
}; 

я в конце концов хотели бы иметь эти «обходные» помещены в подключаемой черт, где я реально не знаю, какие из них будут загружены заранее, но окончательный вывод будет аккуратно отформатирован.

Возможно, что я думаю об этом совершенно неправильно, поэтому другие предложения приветствуются.

+0

Как использовать переменные экземпляра? – jmz

+0

переменные экземпляра @jmz? – xenoterracide

+0

Как '$ self -> {value} = get_value;' .... 'my $ value = $ self -> {value};' – jmz

ответ

0

Используйте переменную экземпляра:.

$self->{value} = get_value; 
... 
my $value = $self->{value}; 

(См вопрос commments для действительного ответа, я просто его здесь, подтверждающее, так что я могу принять ответ, спасибо до:

jmz)

+0

как побочная заметка. Я не использовал этот шаблон для реализации, я просто отпустил эту цель. – xenoterracide