2010-08-15 3 views
1

Est-il possible de passer des variables entre plusieurs appels à aroundMethodModier? par exemple (qui ne fonctionne pas, mais je l'espère véhicule ce que je veux faire)Transférer les variables autour du modificateur de méthode 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' 
     ; 
}; 

Je finirais que d'avoir ces « contournements » placé dans les traits, connectables où je sais pas vraiment ceux qui sont chargés au préalable mais la sortie finale sera soigneusement formatée.

Il est possible que j'y pense complètement faux, donc d'autres suggestions sont les bienvenues.

+0

Comment utiliser les variables d'instance? – jmz

+0

@jmz variables d'instance? – xenoterracide

+0

Comme '$ self -> {value} = get_value;' '' '' 'mon $ value = $ self -> {value};' – jmz

Répondre

0

Utilisez une variable d'instance.

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

(Voir commments question pour une réponse réelle je suis juste réitérer ici, donc je ne peux accepter une réponse, merci vers:

jmz)

+0

comme une note de côté je n'ai pas fini par utiliser ce modèle pour la mise en œuvre, j'ai simplement laissé aller cet objectif. – xenoterracide

Questions connexes